我正在尝试使用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。
也许我误会了,但是您不能将返回数据设置dataType为text和JSON.parse()吗?
dataType
text
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”。