[英]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 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];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.