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