jquery ajax 中實現給變量賦值


我們在用JQuery的Ajax從后台提取數據后想把它賦值給全局變量,但是卻怎么都賦不進,為什么呢?

原因其實很簡單,我們用的Ajax是異步操作,也就是說在你賦值的時候數據還沒提取出來,你當然賦不進去,所以只要改成同步操作就行~

方法1:先設置同步在進行Ajax操作

//在全局或某個需要的函數內設置Ajax異步為false,也就是同步
$.ajaxSetup({ 
    async :false
}); //然后再進行你的Ajax操作 $.post(地址,參數,function(data, status){
  if(status =="success"){
    //賦值給全局變量
  }else{
alert("wrong");
}});

方法2:直接用$.ajax

$.ajax({ 
    type :"post", 
    url :地址, 
    data :"參數"+參數的值, 
    async :false, 
    success :function(data){
        //賦值給全局變量;
    }
});    

在調用一個jquery的ajax方法時我們有時會需要該方法返回一個值或者給某個全局變量賦值,可是我們發現程序執行完后並沒有獲取到我們想要的值,這時很有可能是因為你用的是ajax的異步調用async:true(默認情況),如:

function ManageCommentText(text) { 
var result = text; 
$.ajax({ 
data: "get", 
url: "GetComments.aspx", 
data: "type=getText&commentText=" + text, 
cache: false, 
async: false, 
success: function (data) { 
result = data; 
} 
}) 
return result;

以上方法是ajax的同步調用,只有在獲取到了data值並賦值給result以后才會返回result完成該方法的調用。若設為async:true, 
則會未等到獲取data值就已經返回了result。

另一個解決辦法就是將你的代碼直接寫到success方法里。(根據你的業務並不是所有的都可以直接寫到success里的)。

注意:如果設定為 async: false,就失去 ajax異步的優點了哦。


免責聲明!

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



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