一尘不染

jQuery JSON响应始终触发ParseError

json

我正在尝试使用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'
});

错误回调总是被触发。它显示

错误…未调用parsererror jQuery15001997238997904205_1298484897373

通过Firebug检查返回的JSON不会显示任何错误,并且各种JSON lint工具也都可以验证。将dataType更改为“
text”可以调用成功。但是我正在尝试将isUsernameAvailable调用用作jQuery验证插件的一部分,因此我需要它返回有效的JSON。


阅读 255

收藏
2020-07-27

共1个答案

一尘不染

也许我误会了,但是您不能将返回数据设置dataTypetext和JSON.parse()吗?

success: function(data) {
    data = JSON.parse(data);
    // process data
},

编辑以添加普遍同意的解决方案(以前仅是注释):

我只是看了一下api.jquery.com/jQuery.ajax,看起来像使用jQuery
1.5一样,您可以进行各种类型的转换。“多个空格分隔的值:从jQuery 1.5开始,jQuery可以将dataType从Content-
Type标头中接收的数据类型转换为所需的数据类型。例如,如果要将文本响应视为XML,请使用“文本xml”(用于dataType)。也许您可以尝试“ text
json”。

2020-07-27