解決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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章