2017-06-05 49 views
0

但是,我試圖在執行Ajax後返回一個字符串;我得到undefined而不是字符串。我知道代碼正在異步執行,但我不明白如何爲我的問題制定解決方案。在Ajax成功函數中返回字符串

JS

function aggregator(field){ 
    var query = '{"aggs": { "group_by_date": { "terms": { "field": "' + field + '" } } } }'; 

    $.ajax({ 
     url: 'index.php', 
     type: 'post', 
     data: { 
      qSet: query 
     }, 
     success: function(message){ 
      return message; 
     } 
    }); 

} 

    var results = aggregator("transactionDate"); 
    document.getElementById("results").innerHTML = results; 

如何讓這個我在HTML元素有返回值?

+1

的可能的複製[jQuery的:返回Ajax調用成功後的數據(https://stackoverflow.com/questions/5316697/jquery -return-data-after-ajax-call-success) – mx0

+0

[如何從異步調用返回響應?](https://stackoverflow.com/questions/14220321/how-do-i-return -the-響應從 - 一個異步呼叫) – Jasen

回答

1

歡迎來到異步編程。您必須在ajax函數的回調中處理您的返回值,或者使用某種基於promise的延遲隊列。

對於你的問題的快速解決方案,嘗試第一種方法:

function aggregator(field,element){ 
    var query = '{"aggs": { "group_by_date": { "terms": { "field": "' + field + '" } } } }'; 

    $.ajax({ 
     url: 'index.php', 
     type: 'post', 
     data: { 
      qSet: query 
     }, 
     success: function(message){ 
      document.getElementById(element).innerHTML=message; 
     } 
    }); 

} 

aggregator("transactionDate","results");