jQuery JSON响应总是触发ParseError

Che*_*rae 34 jquery json playframework

我试图用jQuery和JSON预先形成一些基本操作.目前在jQuery接受来自我的播放框架应用程序的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'
});
Run Code Online (Sandbox Code Playgroud)

始终触发错误回调.它显示

错误... parsererror jQuery15001997238997904205_1298484897373未被调用

通过Firebug检查返回的JSON显示没有错误,各种JSON lint工具也验证.将dataType更改为"text"会调用成功.但我试图使用isUsernameAvailable调用作为jQuery验证插件的一部分,所以我需要它来返回有效的JSON.

ggu*_*erg 34

也许我误解了,但你不能设置dataTypeto text和JSON.parse()返回的数据吗?

success: function(data) {
    data = JSON.parse(data);
    // process data
},
Run Code Online (Sandbox Code Playgroud)

编辑添加一般商定的解决方案(以前只是评论):

我刚刚看了一下api.jquery.com/jQuery.ajax,看起来像jQuery 1.5,你可以进行各种类型的转换."多个空格分隔的值:从jQuery 1.5开始,jQuery可以将dataType从Content-Type标头中收到的内容转换为您需要的内容.例如,如果您希望将文本响应视为XML,请使用" text xml"for dataType." 也许你可以尝试"文字json".

  • 我刚刚看了http://api.jquery.com/jQuery.ajax/,看起来像jQuery 1.5,你可以进行各种类型的转换."多个空格分隔的值:从jQuery 1.5开始,jQuery可以将dataType从Content-Type标头中收到的内容转换为您需要的内容.例如,如果您希望将文本响应视为XML,请使用" text xml"for dataType." 也许你可以尝试"文字json". (5认同)
  • dataType:'text json',做了工作+1 @dosboy (3认同)
  • 我刚刚在jQuery Validation插件代码中将"json"更改为"text json",一切都运行良好.谢谢你的回答,但我仍然感到困惑,为什么"json"不起作用.Content-Type标头设置为application/json. (2认同)

Joh*_*ika 12

升级到jQuery 1.5后,我得到了同样的错误.事实证明我的问题是因为我也在使用jquery验证插件,它与jQuery 1.5不兼容.如果我删除了jquery验证插件,带有dataType json的$ .ajax()工作正常.

有关jquery验证插件不兼容性的更多信息,请访问:http: //bugs.jquery.com/ticket/8118