ajax請求成功回調函數沒有執行問題


如下常見的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即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM