如下常見的ajax前端請求,請求成功后success:function(result){ 這里的數據沒有執行 }:
$.ajax({
type:"post",
url:"http://localhost:8080/user/insertUser",
xhrFields:{widthCredentials:true},//這里解決跨域問題需要結合后端哦
data:{
"username":$("#username").val(),
"password":$("#password").val()
},
success:function (result) {
if (0==result.code){
alert("注冊成功");//這里沒有正常彈出
window.location.href ="login.html";
}else {
alert("注冊失敗,請重新注冊");
}
},
error:function (result) {
alert("未知錯誤");
}
})
回調函數沒有正常執行,解決辦法: 添加async: false,(默認是true);
如上:false為同步,這個Ajax請求將整個瀏覽器鎖死,
只有url請求中后台的方法執行結束后,才可以執行其它操作。
當async: true 時,ajax請求是異步的。但是其中有個問題:ajax請求和其后面的操作是異步執行的,那么當后台方法還未執行完,就可能已經執行了 ajax請求后面的操作。然而,data這個數據是在ajax請求success后才賦值的,結果,輸出時會為空。
所以導致一種回調函數沒有被調用的假象。
問題2
在添加async: false;后success回調函數能夠正常alert彈窗,但是下面的window.location.href ="login.html";不能正常跳轉,這個時候您檢查一下您綁定的點擊button按鈕是否是 type="button",如果是submit改成button即可。