2013-04-12 38 views
0

我有一個簡單的Ajax功能JS的Ajax功能不設置變量值

function get_country(request_term) { 
    var country_list = ''; 
    $.ajax({ 
     url : "activity/get_country", 
     type : "POST", 
     cache : false, 
     data : { 
     request_term : request_term 
     }, 
     success : function(data) { 
     if(data != '') { 
      country_list = $.parseJSON(data); 
      alert(country_list);    ----> Got value here 
     } 
     } 
    }); 
    alert(country_list);      ----> Not getting value here 
    return country_list; 
    } 

的問題是,我得到的成功,函數的數據,但無法從main函數返回。

+0

的可能重複[如何返回Ajax響應文本?](http://stackoverflow.com/questions/1225667/how-to-return -ajax-response-text) – Quentin

回答

1

因爲ajax是異步的,所以不知道success函數什麼時候會完成(或者是否會完成完成)。因此,任何需要ajax調用結果的代碼都必須依賴於ajax回調。

jQuery使綁定其他回調變得非常容易。

return $.ajax({ /* rest of your code */ 

get_country(request_term).done(function (data) { 
    //are you sure JSON isn't returned already? 
    country_list = $.parseJSON(data); 
}); 
1

您可以通過將async設置爲false來實現。但這不是一種推薦方式。

此代碼將返回COUNTRY_LIST

function get_country(request_term) { 
var country_list = ''; 
$.ajax({ 
    url : "activity/get_country", 
    type : "POST", 
    cache : false, 
    async : false, 
    data : { 
    request_term : request_term 
    }, 
    success : function(data) { 
    if(data != '') { 
     country_list = $.parseJSON(data); 
     alert(country_list);    
    } 
    } 
}); 
alert(country_list);      
return country_list; 

}

+0

嗨。謝謝。爲什麼它不推薦? – Dino

+0

@DBK請reffer此鏈接http://stackoverflow.com/questions/6517403/what-are-the-drawbacks-of-using-synchronous-ajax-call – 2013-04-12 08:31:51