關於ajax中return並不能作為方法的返回值


接下來關於ajax中的return值最后沒有辦法是方法的最終返回值問題

login(username,password)

{

console.log("進入方法");

$.ajax({

type:"POST",

url:"http://192.168.28.168:1314/api/Users/login",

dataType:"Json",

data:{

"username":username,

"password": password,

},

success:function(data){

console.log("調用接口成功")

console.log(data.statusCode);

return data.statusCode;

},

error:function(err){

console.log("調用接口失敗");

status = 0;

}

});

}

 

我們能看到方法中明明return了但是 調試卻發現 這個方法的返回值是defined

其實因為在ajax方法中return只是退出了ajax方法 並非是login方法的返回值

然后我們設置一個新的變量,然后在ajax內部賦值,最后在ajax方法外return試試

 

仍然不行

Ok這就涉及到ajax是異步行為,所以就是在return的時候ajax不一定拿到了值

 

 

我希望只有當status有數據的時候再返回

那其實這個思路就是錯的因為是異步 的這個if只能判斷一次不是反復判斷的

也就是說在ajax拿到值之后也未必會在進入status判斷

嘗試用setState的方法結果發現setState 竟然打印的結果不同

 

 

最后的解決方案,換個思路,你未必一定要讓你的方法有返回值可以把方法寫在ajax的success函數中去。

 

 


免責聲明!

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



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