json数据,但我得到一个SyntaxError?
这里是一个页面的代码片段:
$("#add_new").button().click(function (ui,event) {
var postdata = {
"action":"new",
field_kind_id:2,
collection_id:null,
parent_id:null,
app_struct_id:null,
member_id:1033,
app_id:1003,
};
$.ajax({
url: "?",
type: "POST",
data: postdata,
error: function(jqXHR, textStatus, errorThrown) {
$().toastmessage("showErrorToast",
"AJAX call failed: "+textStatus+" "+errorThrown);
},
success: function(data) {
edit_record(data);
return false;
}
});
});
实际上,发布的数据是这样的:
action new
app_id 1003
app_struct_id null
collection_id null
field_kind_id 2
member_id 1033
parent_id null
答案是这个字符串:
{x22app_idx22:1003,x22member_idx22:1033,x22collection_idx22:x22-6885x22,x22field_kind_idx22:2,x22sample_idx22:x22x22,x22parent_idx22:x22x22}
该响应是无效的json数据。 它有一个特殊的格式。 我的问题是,上面的ajax调用显示这个吐司消息:
“AJAX调用失败:parsererror SyntaxError:非法字符”
所以看起来AJAX调用失败了。 但我不明白什么是检查语法? 什么样的语法? JQuery Ajax调用没有指定“dataType:json”。 所以不应该有任何语法来检查。 我错过了什么?
JQuery文档说“dataType”的默认值是“intelligent”
“智能猜测(XML,JSON,脚本或HTML)”
如果响应不能被解释为JSON值,那么它不是JSON值,对吧? 要么它不是一个有效的JSON值(在这种情况下,它不应该被转换),或者它是(但它不应该抛出异常?)这是否意味着jQuery不够智能?
Content-Type头部在来自服务器的响应中的值是什么? 我期望对内容的格式进行猜测。
我建议你明确地将dataType
设置为"text"
(请参阅jQuery.ajax),以便jQuery不需要猜测响应的内容类型:
$.ajax({
url: "?",
type: "POST",
data: postdata,
dataType: "text", // the type of data that you're expecting back from the server
error: function(jqXHR, textStatus, errorThrown) {
$().toastmessage("showErrorToast",
"AJAX call failed: "+textStatus+" "+errorThrown);
},
success: function(data) {
edit_record(data);
return false;
}
});
你遇到的错误的原因可能是以下几点:jQuery假定你的服务器的响应是JSON格式并试图解析它。
链接地址: http://www.djcxy.com/p/48171.html