如何从Objective C方法将包含JSON的JSON NSString传递给Javascript方法
我有一个要求,即objective C code should
使用WebService
并且以JSON format
接收的响应必须作为参数传递给javascript
方法以进行进一步处理。我正在使用UIWebView
,它将在处理JSON response.
后显示相应的结果JSON response.
当我尝试将JSON字符串传递给Javascript
方法时出现问题.Javascript方法不会简单地接受输入。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection { [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; NSString *responseString = [[NSString alloc] initWithBytes:[resultData bytes] length:[resultData length] encoding:NSUTF8StringEncoding]; NSLog(@"%@",responseString); [self returnResponseToJavaScriptMethods:responseString]; } -(void)returnResponseToJavaScriptMethods:(NSString*)theResponse{ [viewMainWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"retrieveServerResponse('%@')",theResponse]]; }
有什么我错过了吗? 使用相同的方法正确传递简单的字符串。
更新 :将responseData
编码为UTF8StringEncoding
就可以了。
[theResponse stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]
在将JSON字符串发布到javascript之前,您可能需要对其进行URL转义。
尝试改变:
-(void)returnResponseToJavaScriptMethods:(NSString*)theResponse{ [viewMainWebView stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat:@"retrieveServerResponse('%@')",theResponse]]; }
至
-(void)returnResponseToJavaScriptMethods:(NSString*)theResponse{ [viewMainWebView stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat:@"retrieveServerResponse('%@')", [theResponse stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]; }
看看这有助于你。 但是请注意,有更好的(或更可靠的)方法来转义字符串,例如在此答案中给出的方法: 如何对字符串进行URL编码
在javascript中不需要retrieveServerResponse()
,只需在iOS中转义百分比unescape(percentEscapedStringFromiOS)
后使用unescape(percentEscapedStringFromiOS)
NSString *encodedString = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; // CAVEAT: unescape(\"%@\") is important since "'" (single quote) isn't excaped by the above function! NSString *jsString = [NSString stringWithFormat:@"myJSstring = unescape(\"%@\")", encodedString]]; NSString *jsResult = [self.webView stringByEvaluatingJavaScriptFromString:jsString];
- 为什么在iOS Safari Mobile(iPhone / iPad)中没有触发模糊事件?
- 在关注输入时,iOS中忽略了固定/绝对定位
- window.location.href在Ipad和Iphone中不起作用
- ReactNative – 未处理的JSexception:SyntaxError
- 快速反应本机:立即开始使用JavaScript学习本机iOS开发!
- 如何使用Expo在真实的iOS设备上运行应用程序?
- 使用mp3元数据或HTML在iPhonelocking屏幕上显示图稿和曲目名称
- 使用蓝牙扫描仪/键盘在iOS / Safari上监听HTML / JavaScript中的按键,而无需专注于某个字段
- 如何在UIWebView中获取元素的位置?