最近寫登錄的頁面,發(fā)現(xiàn)通過ajax請求后臺的時候,監(jiān)控臺返回該請求的狀態(tài)是canceled。
原因
僅僅是由于之前為了在輸入賬號時讓瀏覽器進行自動補全,而將原先的div更換為了form,而不巧的是之前的登錄事件源使用的是button。
而至于為什么status = canceled,是由于在提交時,form action與綁定于button上的click事件會同時觸發(fā)。form action將表單內(nèi)容以serach的形式追加至當前url上,url變更后會導(dǎo)致頁面重新加載, 而這正是導(dǎo)致post請求在執(zhí)行后就被終止的原因。
解決方案
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;
})
最后發(fā)現(xiàn)是ajax請求默認是異步的。我把請求改成同步的就行了。設(shè)置如下參數(shù):async: false。