Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从UIWebView使用多行字符串调用Javascript函数_Javascript_Ios_Objective C_D3.js_Uiwebview - Fatal编程技术网

从UIWebView使用多行字符串调用Javascript函数

从UIWebView使用多行字符串调用Javascript函数,javascript,ios,objective-c,d3.js,uiwebview,Javascript,Ios,Objective C,D3.js,Uiwebview,我正在使用D3.js以TSV文件的形式为一些信息创建一个图表。我将TSV文件保存为NSString。在javascript中,我有一个函数,它将获取字符串,解析它,并根据其内容创建一个图表。下面是我调用JS函数的代码: [self.mainWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"parseTSV(\"%@\");", tsvString]]; 在上面的代码中从未调用过该函数,但如果我

我正在使用D3.js以TSV文件的形式为一些信息创建一个图表。我将TSV文件保存为NSString。在javascript中,我有一个函数,它将获取字符串,解析它,并根据其内容创建一个图表。下面是我调用JS函数的代码:

[self.mainWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"parseTSV(\"%@\");", tsvString]];
在上面的代码中从未调用过该函数,但如果我传入一个随机字符串文字,它就是这样的:

[self.mainWebView stringByEvaluatingJavaScriptFromString:@"parseTSV(\"randomString\")"];
这可能是因为JS没有将多行字符串作为函数参数吗?有什么解决办法吗


谢谢。

JavaScript不支持字符串文本中的换行符-不管它是否是函数的参数。将换行符编码为\n,或者更好地使用现有的适当转义机制,JSON字符串会工作得很好。我很确定换行符已经编码为\n了…那么它就不是一个语法错误,这是对该行为最合理的解释-一个字符串就是一个字符串就是一个字符串。从哪里开始并不重要,只要它是一个有效的表达式。我建议在这里使用JSON,只需传递整个对象,并将字符串作为一些值—这将避免任何琐碎的解析错误,例如字符串中的换行符,并轻松适应更复杂的值/数据的扩展。还有其他情况下,randomString可能会破坏JS:即某些反斜杠组合或双引号。感谢您的帮助。我需要将字符串中的换行符\n更改为\\n,以便JS识别它。它需要\n在JavaScript文本中,但\\n在C字符串文本中,这将\n在生成的C字符串中,从而在JS文本中。虽然解决了眼前的问题很好,但我仍然鼓励使用JSON作为交换格式构建一个更强大的接口层。