我有一个要求, Objective-C 代码应该
使用 WebService
并且以 JSON 格式接收的响应
必须作为javascript
方法的参数用于进一步处理。我正在使用 UIWebView
,它将在处理 JSON 响应后显示适当的结果。
当我尝试将 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]]];
}
看看这是否对您有帮助。但是请注意,有更好(或更可靠)的方法来转义字符串,例如此答案中给出的方法:How do I URL encode a string
关于javascript - 如何将包含 JSON 的 JSON NSString 从 Objective C 方法传递给 Javascript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14198331/