这是来自页面的代码片段:
$("#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;
}
});
});
实际上 POST 编辑的数据类似于:
action new
app_id 1003
app_struct_id null
collection_id null
field_kind_id 2
member_id 1033
parent_id null
响应是这个字符串:
{\x22app_id\x22:1003,\x22member_id\x22:1033,\x22collection_id\x22:\x22-6885\x22,\x22field_kind_id\x22:2,\x22sample_id\x22:\x22\x22,\x22parent_id\x22:\x22\x22}
响应不是有效的 json 数据。它有一个特殊的格式。我的问题是上面的 ajax 调用显示了这个 toast 消息:
“AJAX 调用失败:parsererror SyntaxError:非法字符”
所以看起来AJAX调用失败了。但我不明白什么是检查语法?什么样的语法?JQuery Ajax 调用没有指定“dataType:json”。所以不应该检查任何语法。我错过了什么?
JQuery 文档说“dataType”的默认值是“intelligent”
“智能猜测(xml、json、脚本或 html)”
如果响应不能被解释为 JSON 值,那么它就不是 JSON 值,对吧?要么它不是一个有效的 JSON 值(在这种情况下,它不应该被转换)要么它是(但它不应该抛出异常?)这是否意味着 jQuery 不够智能?