1. 程式人生 > >解決http響應狀態為canceled

解決http響應狀態為canceled

最近寫登入的頁面,發現通過ajax請求後臺的時候,監控臺返回該請求的狀態是canceled。

原因

僅僅是由於之前為了在輸入賬號時讓瀏覽器進行自動補全,而將原先的div更換為了form,而不巧的是之前的登入事件源使用的是button。

而至於為什麼status = canceled,是由於在提交時,form action與綁定於button上的click事件會同時觸發。form action將表單內容以serach的形式追加至當前url上,url變更後會導致頁面重新載入, 而這正是導致post請求在執行後就被終止的原因。

解決方案

form.on("submit(login)",function
(data){ $.ajax({ url:"/schema/login", data:{ username:data.field.username, password:data.field.password }, dataType: "json", contentType: "application/json; charset=utf-8", async:false
, success:function (res) { if("success" == res){ window.location.href = "../index.html"; return false; } }, error:function (res) { alert("失敗,請重新登入!"); } }
) return false; })

最後發現是ajax請求預設是非同步的。我把請求改成同步的就行了。設定如下引數:async: false。