更新时间:我正在提交HTML FORM数据,但期望接收JSON数据。我并没有尝试POST JSON数据。
我正在尝试通过HTML FORM POST请求获取一个JSON响应。当使用简单的HTML FORM POST请求(不是AJAX)时,我成功地接收到了JSON数据。我的HTML FORM POST的JSON响应如下:
{"success":true,"data":1234567}
当我尝试使用jQuery的.ajax()处理请求和响应时,出现了问题。
$.ajax({
type: "POST",
url: URL,
data: data1,
dataType: "json",
success: function(data, textStatus, jqXHR) {
alert ("success");
},
error: function(xhr, status, error) {
alert ("Error: " + error);
}
});
在运行上述代码并使用Firebug进行调试后,似乎POST请求已经成功发送,但在处理响应时出现了问题。根据Firebug显示的信息,关于POST请求的HTTP响应如下:
Response Headers
Cache-Control private
Content-Length 31
Content-Type application/json; charset=utf-8
...
看起来正在发送31字节的数据。然而,在调试实际的Javascript时,出现了错误函数并且xhr对象是这样的:
Object { readyState=0, status=0, statusText="error"}
我知道jQuery.ajax()文档中指出:"在jQuery 1.4中,JSON数据以严格的方式进行解析;任何格式不正确的JSON都会被拒绝并抛出解析错误。" 然而,我相信我的JSON是有效的,因为我已经在jsonlint.com上检查过了。
可能出了什么问题?
$.ajax()
中添加contentType: "application/json; charset=utf-8"
。 - Mrchief