【发布时间】:2011-10-14 11:37:27
【问题描述】:
更新:我正在发布 HTML FORM 数据,但希望收到 JSON 数据。我不试图发布 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 上进行了检查。
还有什么问题?
【问题讨论】:
-
尝试将
contentType: "application/json; charset=utf-8"添加到$.ajax() -
var data1 = "apikey="+apikey+"&firstname="+fName+"&lastname="+lName+....... 我知道 data1 不是问题,因为服务器已成功接收数据
-
添加 contentType: "application/json; charset=utf-8" 会导致 POST 请求无法成功通过服务器。我没有发布 JSON 数据。我正在发布简单的 FORM 数据,但响应是 JSON。
标签: json jquery post response http-post