jQuery JSON响应总是触发一个ParseError
我正在尝试使用jQuery和JSON进行一些基本操作。 目前,jQuery接受来自我的play framework应用程序的JSON响应有困难。 下面是仍然产生错误的代码的简化版本。
$.ajax({
type: 'POST',
url: "@{FrontEnd.isUsernameAvailable()}",
data: "name=thisnameisavailable",
cache: false,
success: function(data) {
console.log("Success... ");
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("Error... " + textStatus + " " + errorThrown);
},
dataType: 'json'
});
错误回调总是被触发。 它显示
错误... parseError jQuery15001997238997904205_1298484897373未被调用
通过Firebug检查返回的JSON显示没有错误,并且各种JSON lint工具也被验证。 将dataType更改为“text”可以调用成功。 但我试图使用isUsernameAvailable调用作为jQuery验证插件的一部分,所以我需要它返回有效的JSON。
也许我误解了,但不能将dataType
设置为text
和JSON.parse()返回的数据?
success: function(data) {
data = JSON.parse(data);
// process data
},
编辑添加普遍认同的解决方案(以前仅作评论):
我只是看了一下api.jquery.com/jQuery.ajax,看起来像使用jQuery 1.5,你可以进行类型转换。 “多个空间分隔值:从jQuery 1.5开始,jQuery可以将ContentType类型头文件中的数据类型转换为您需要的数据类型,例如,如果您希望将文本响应视为XML,请使用” text xml“作为dataType。” 也许你可以尝试“文本JSON”。
升级到jQuery 1.5后,我收到了同样的错误。 事实证明,我的问题是因为我也使用jQuery验证插件,它与jQuery 1.5不兼容。 如果我删除了jquery验证插件,那么带有dataType json的$ .ajax()可以正常工作。
有关jquery验证插件不兼容性的更多信息,请访问:http://bugs.jquery.com/ticket/8118
我还得到了“parseError jQueryNNNN_NNN未被调用”(使用jsonp和jQuery 1.7.2)原因是返回的json结构中的一个值包含换行符。 希望这可以帮助某人。
链接地址: http://www.djcxy.com/p/46095.html上一篇: jQuery JSON response always triggers a ParseError
下一篇: Bug with combination of: jQuery 1.4, ajax/json, Firebug Lite and IE 8