2017-06-05 7 views
0

Ajaxを実行した後に文字列を返そうとしていますが、私は文字列の代わりに単語undefinedを得ています。コードが非同期で実行されていることを理解していますが、問題の解決方法を理解できません。Ajax成功関数の文字列を返す

JS HTMLでの私の要素が返された値を持つように私はそれを作るにはどうすればよい

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; 

+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非同期呼び出しからの応答) – Jasen

答えて

1

ようこそ非同期プログラミング。 ajax関数のコールバックの中で戻り値を処理するか、たとえば約束に基づいて何らかの遅延キューを使用する必要があります。

あなたの問題の迅速な解決のために、第一の技術を試してみてください。

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");