2016-10-25 8 views
0

jqueryを使用して、ajax関数が終了するまで待ってから、関数の結果をテストdivに公開する場合。私は5秒ごとにプロセスを繰り返すために間隔を使用しています。私が得ている結果は未定義であり、次にjson要素のidです。jquery ajax

ここに私のコードです。私は最初の間隔でIDを取得するにはどうすればよい

shortWVCInterval = setInterval(defferedAjax, 5000); 
GLB_VAR = "None"; 

function defferedAjax(){ 
    $.when(checkAjax()).done(function(){ 
    $('#test').append(GLB_VAR.id + " - "); 
    }); 
} 

function checkAjax(){ 
    var url = "https://jsonplaceholder.typicode.com/posts"; 
    $.ajax({ 
     type: "POST", 
     url: url, 
     dataType: 'json', 
     success: function(data) { 
      GLB_VAR = data; 
     } 
    }); 
} 

https://jsfiddle.net/Lh2q5c4t/

?ここ

+0

あなたは '$ .when()'を必要としません。 –

+1

@KevinB詳細を教えてくれてありがとう。 – PGrammer

答えて

3

作業コード:

shortWVCInterval = setInterval(defferedAjax, 5000); 
GLB_VAR = "None"; 

function defferedAjax(){ 
    $.when(checkAjax()).done(function(){ 
    $('#test').append(GLB_VAR.id + " - "); 
    }); 
} 

function checkAjax(){ 
    return $.ajax({ 
     type: "POST", 
     url: "https://jsonplaceholder.typicode.com/posts", 
     dataType: 'json', 
    success: function(data) { 
     GLB_VAR = data; 
    } 
}); 
} 

https://jsfiddle.net/Lh2q5c4t/3/

編集:追加 "$アヤックスを返す" しなければならないが、「return文は関数の実行を停止してから値を返します。その機能。 "

+0

理由がわかりません。答えをありがとう! – PGrammer

+2

@lefdilia私はdownvoteをしませんでしたが、コードを記述するのではなく、答えを説明することを検討してください。それはより有用なものになり、正解のための下降声の代わりに起きます – baao

+1

問題はありません、答えは編集されました^^ – lefdilia