如何将包含JSON的JSON NSString从Objective C方法传递给Javascript方法
How to Pass JSON NSString containing JSON to a Javascript Method from an Objective C method
我有一个要求,其中objective C code should
消耗WebService
,并且在JSON format
中收到的响应必须作为参数传递给javascript
方法以进行进一步处理。我正在使用UIWebView
,它将在处理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]]];
}
看看能不能帮到你。但是请注意,还有更好的(或更可靠的)转义字符串的方法,例如下面给出的答案:我如何对字符串
javascript中不需要retrieveServerResponse()
,只需在iOS中对字符串进行百分比转义后使用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];
相关文章:
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 解析带有嵌入式数组的JSON对象,方法
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 将JSON存储和恢复到此Ionic应用程序的最有效方法
- 只将JSON中的属性加载到现有的javascript对象中,而不破坏方法
- 向通过ReST JSON调用生成的Angular Javascript对象添加方法
- 使用JSON序列化图论树的解决方法
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 在JavaScript中,有没有一种方法可以解析JSON,将数字转换为字符串
- 无法找到在 YouTube API 中转义 json 中的引号的方法
- Django 使用 JSON 获取模型方法的值
- $http-get方法即使使用AngularJS中.Net WebApi的有效json也会失败
- 如何使用setVisible()方法设置json模型中元素的可见属性
- 将JSON字符串解析为HTML5代码的更快方法
- 有没有任何方法可以将json对象存储在HTML标记的默认/自定义属性中,比如<tr>
- WCF json POST请求方法:GET和405(方法不允许)
- asp.net mvc操作方法发布除json数据之外的数据
- 如何将javascript方法(JSON对象)的结果发送到asp.net网络表单上的代码后面