繁体   English   中英

javascript意外令牌<,有什么办法可以避免错误(或至少跳过那些无用的字符)

[英]javascript unexpected token < , is there any way I can escape the errors(or atleast skip those useless characters)

在PHP中,我有一个像这样的数组:

$arr['a'] = "some big data so may contain some chars that bring us headache"
$arr['b'] = "some big data same as above"

$data = json_encode($arr)
echo $data

我的JavaScript代码包含一个jquery ajax调用$ .ajax。 它会调用包含上述php代码的文件,因此,成功后,json_encoded(由php返回)将返回到我的javascript变量。 在我的javascript文件中,我正在这样做:

jsdata = JSON.parse(data); //Getting error here

$.ajax({
type: "post",
data: jsdata,
url: "url",
crossDomain: true,
dataType: 'jsonp'
}).done(function(d) {
  print("success");
});

从上面的代码中,在jsdata = JSON.parse(data)行中,出现类似以下错误

  Error :    UNEXPECTED TOKEN <

由于数据包含许多不同的内容,因此获取这些错误是正常的。 他们需要适当地逃脱。 谁能告诉我如何正确地做到这一点。 无论数据是什么,我都不应该对数据出错。

谢谢

好吧,您可能应该知道几件事jsdata = JSON.parse(data); 尝试解析您分配给data任何json字符串 ,并将其作为JS对象返回。 我认为您想做相反的事情: jsdata = JSON.stringify(data);

此外,由于您使用的是jQuery,因此可以省去以下内容:jQuery会在发送请求之前将数据转换为适当的格式,而无需您自己去解析或字符串化

是的你忘记了; 在两行的末尾,因此PHP输出错误,该错误不符合JSON。

总是这样做:

  • 捕获错误并以应用程序不稳定的方式输出它们(5xx状态就足够了)
  • 下次使用时,请使用Chrome Developper工具或Firebug查看您的应用真正返回的内容
  • 另外,您输出的是json,而不是jsonp,这与您的应用期望的不同
$.ajax({
  type: "post",
  data: jsdata,
  url: "url",
  crossDomain: true,
  dataType: 'jsonp',
  success: function(d) {
    print("success");
  }
})

这样尝试

这比看起来容易得多。

在对JSON编码并将$data回显到JavaScript之前,调用urlencode($arr['a'])urlencode($arr['b']) (针对$arr每个数据值)。 这将对数组中的数据进行URL编码 ,这样就不会造成任何问题。

解析完JSON后,您将不得不在每个大数据值上调用JavaScript函数unescape(string) 这将使它们恢复到原来的状态。 这是PHP和JavaScript的超级英雄组合!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM