使用SBJason将数组从xcode传递到javascript的问题

时间:2011-11-20 14:43:54

标签: javascript iphone uiwebview

我正在尝试将数组从xcode传递到我的本地html。基本上我在html中使用Jquery,所以使用loadHTMLstring:baseURL来阅读HTML以及包含的.js文件。现在我在使用stringByevaluatingjavascriptfromstring加载webview时遇到了问题。代码是:

NSString *java=[NSString stringWithFormat:@"javafunction('%@');",json];
[webView loadHTMLString:content baseURL:baseURL];    
[webView stringByEvaluatingJavaScriptFromString:java];

在我正在使用的HTML中:

function javafunction(inp) {
  var arr=newArray(); 
  arr='inp'; 
  alert(arr[0]);
}

1 个答案:

答案 0 :(得分:0)

我认为

var arr=newArray(); 
arr='inp'; 

应该是

var arr = new Array(); 
arr[0] = inp;

将数组的第零个元素设置为字符串'inp'

var arr = [inp];

使用缩写数组语法 甚至

var arr = new Array();
arr.push('inp');

使用Array的{​​{1}}方法将输入参数push添加到数组的末尾。

inp可能只会导致newArray之类的错误,而newArray is not defined会用字符串替换数组而不是将字符串放入数组中。

编辑:

arr='inp'

可能不是你想要的。如果[NSString stringWithFormat:@"javafunction('%@');",json] 是JSON编码的字符串,那么您可能想要删除单引号。如果它不是JSON编码的字符串,那么您可能希望对其进行JSON编码。

这可能是一个小问题,但您还应该注意并非所有JSON字符串都是有效的JavaScript表达式,因为JSON允许字符串中的unicode代码点U + 2028和U + 2029,但该代码点是JavaScript中的换行符。即JavaScript表达式json因异常而失败。