2014-03-13 99 views
0

看我的代碼:如何從jQuery中的ajax調用返回值?

function dialogTexts() { 
    var langText = $.ajax({ 
     type: 'GET', 
     url: '/main/getdialogtexts', 
     dataType: 'json' 
    }); 

    langText.done(function(data) { 
     //data contains a array returned correctly from php    

     //The data.delete is returned correctly from php. data.delete contains a string 
     return data.delete; 
    });       

    langText.fail(function(ts) { 
     alert(ts.responseText); 
    }); 
} 

爲什麼變量lang得到未定義上面的函數調用時?

var lang = dialogTexts(); 

回答

1

不能回報從異步Ajax調用的值。你只能從回調中獲得它的價值。除非您使用async:false,因爲它在請求未決時凍結UI,因此不建議使用。

How do I return the response from an asynchronous call?

function dialogTexts(callback) { 
    var langText = $.ajax({ 
     type: 'GET', 
     url: '/main/getdialogtexts', 
     dataType: 'json' 
    }); 

    langText.done(function(data) { 
     //data contains a array returned correctly from php    
     callback(data.delete) 
     //The data.delete is returned correctly from php. data.delete contains a string 
     return data.delete; 
    });       

    langText.fail(function(ts) { 
     callback(false); 
    }); 
} 

dialogText(function(text) { 
    alert(text); 
}) 
+0

你的意思是'異步:FALSE'? – andrew

+0

@andrew是的,謝謝 –

+0

好的,謝謝!也許我很累,但我不太明白如何從回調函數返回。我試圖在dialogTexts(函數(文本))中使用返回,然後嘗試var lang = dialogTexts(),但當然不起作用。你的代碼有效,但我想把回調函數的返回值存儲到一個變量中。 – bestprogrammerintheworld