[英]jQuery $.ajax works with GET but fails on POST
我在客戶的服務器上遇到了一個非常奇怪的問題。
我在幾個腳本中使用下面發布的代碼。 $ .ajax配置幾乎完全相同(即僅文件,數據和成功功能更改),並且始終使用type:POST。
在大多數情況下,這是可行的,但是對於以下情況,POST始終會失敗。 將類型更改為GET可以正常工作。
我一點也不知道這里發生了什么。
var parameter = {
password : $("#password").val()
};
$.ajax({
type : "POST",
url : "query/submit_password.php",
dataType : "xml",
async : true,
data : parameter,
success : function(aXHR) { /* ... */ },
error : function(aXHR, aStatus, aError) { alert("Error:\n" + aStatus + "\n"+ aError); }
});
該代碼始終帶有警告“ NetworkError:發生網絡錯誤”。
再說一遍-其他幾乎具有相同代碼的情況也可以正常工作。
Chrome和Firefox開發人員工具報告POST錯誤,沒有任何進一步的解釋。
知道這里會發生什么嗎?
還有更多細節。
HTTPScoop顯示以下結果
(3次嘗試,紅色狀態為“通信伙伴關閉了連接”):
Chrome顯示以下內容:
差不多解決了。
apache日志在請求中顯示狀態403。
它還顯示返回的大小為0,這可能是chrome等顯示請求失敗的原因。
發生這種情況的原因尚不清楚,但這絕對是服務器端配置問題(很可能是mod_rewrite問題或類似問題)。
嘗試將contentType:“ application / json; charset = utf-8”添加到您的Ajax調用中
$.ajax({
type : "POST",
url : "query/submit_password.php",
contentType: "application/json; charset=utf-8",
dataType : "xml",
async : true,
data : parameter,
success : function(aXHR) { /* ... */ },
error : function(aXHR, aStatus, aError) { alert("Error:\n" + aStatus + "\n"+ aError); }
});
如果它無濟於事,請嘗試一下benhowdle89所說的內容,使用stringify(parameter)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.