簡體   English   中英

jQuery $ .ajax與GET一起使用,但在POST上失敗

[英]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錯誤,沒有任何進一步的解釋。

知道這里會發生什么嗎?


還有更多細節。

  • 客戶的網站托管在GoDaddy上
  • 相同的條碼可在其他服務器上很好地工作
  • 是的,該文件確實存在,因為GET請求有效
  • 我嘗試過的所有瀏覽器都未安裝阻止程序插件(例如adblock)

HTTPScoop顯示以下結果
(3次嘗試,紅色狀態為“通信伙伴關閉了連接”):

HTTPScoop結果

Chrome顯示以下內容:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM