2014-08-27 116 views
0

我有這樣的document.ready函數;函數涉及AJAX不返回值 - jQuery

function myfun(){ 
    var xx; 
    $.ajax({ 
     type: 'POST', 
     url: 'handler.php', 
     cache: false, 
     success: function(result) { 
      xx = result; 
     }, 
    }); 
    return xx; 
    } 


    var a; 
    a = myfun(); 
    alert(a); 

handle.php被設置爲回波1234。但我得到警報「未定義」。我怎樣才能解決這個問題?預計警報是「1234」(從阿賈克斯處理回覆)

在此先感謝... :)

回答

1

這是異步的。使用回調:

function myfun(){ 

    return $.ajax({ 
     type: 'POST', 
     url: 'handler.php', 
     cache: false 
    }); 
} 

myfun().done(function(data){ 
    console.log(data); 
}); 

或者,如果您使用的是舊版本的jQuery無延遲對象:

function myfun(done){ 

    $.ajax({ 
     type: 'POST', 
     url: 'handler.php', 
     cache: false, 
     success: done 
    }); 
} 

myfun(function(data){ 
    console.log(data); 
}); 

https://stackoverflow.com/search?q=ajax+not+returning+data

+0

好的......問題已修復..我將此標記爲已接受... – 2014-08-27 19:40:59

0

因爲你返回值之前Ajax調用可以完成,阿賈克斯通話時默認是異步的,你可以在success回撥裏面alert,那時你的變量將會有你設定的值:

function myfun(){ 
    var xx; 
    $.ajax({ 
     type: 'POST', 
     url: 'handler.php', 
     cache: false, 
     success: function(result) { 
     xx = result; 
     alert(xx); 
     }, 
    }); 
} 

myfun(); 
0

這是一個異步調用的問題。您可以重寫代碼,如:

var xx; 
    var a; 

    function myfun(){ 
    $.ajax({ 
     type: 'POST', 
     url: 'handler.php', 
     cache: false, 
     success: function(result) { 
      xx = result; 
     }, 
    }); 
    } 

myfun(); 
alert(xx);