我试图用jQuery和JSON预制一些基本操作。目前很难从jQuery接受我的play框架应用程序的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' });
Error… parsererror jQuery15001997238997904205_1298484897373 was not called
通过Firebug检查返回的JSON显示没有错误和各种JSON Lint工具也验证。将dataType更改为“text”可以调用成功。但我想使用isUsernameAvailable调用作为jQuery验证插件的一部分,所以我需要它来返回有效的JSON。
解决方法
也许我是误解,但你不能设置dataType为文本和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。也许你可以尝试“文本json”。