解決http響應狀態為canceled
阿新 • • 發佈:2019-01-27
最近寫登入的頁面,發現通過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。