2016-05-05 9 views
0
$.each(data, function (index, info) { 
        var a = info.notes; 
        var b = info.permission; 
        //var c = null; 
        var c = null; 
        $.ajax({ 
         url: "assets/getExpiration.php?expiry=" + info.expiration, 
         type: "GET", 
         dataType: "text" 
        }, function(data){ 
         c = data; 
        }); 
        var z = null; 
        switch(info.stars) { 
         case 0: z = "<img src='assets/img/0star.png'/>"; break; 
         case 1: z = "<img src='assets/img/1star.png'/>"; break; 
         case 2: z = "<img src='assets/img/2star.png'/>"; break; 
         case 3: z = "<img src='assets/img/3star.png'/>"; break; 
         default: z = "<label class='label label-danger'>" + c + "</label>"; break; 
        } 

        var notes = a.length > 0 ? "<i class='fa fa-file'></i>" : ""; 
        var permission = b.length > 0 ? "<i class='fa fa-warning'></i>" : ""; 
        if (info.status == 'EXPIRED') { 
         $("#pendingCall" + info.callNum).append("<button onclick=\"loadPlayer('" + info.playerTag+ "', '" + info.status + "', "+ info.callNum +")\"class='btn btn-danger disabled'>" + info.username + " " + permission + " " + notes + "</button>"); 
        } else { 
         $("#pendingCall" + info.callNum).append("<button onclick=\"loadPlayer('" + info.playerTag+ "', '" + info.status + "', "+ info.callNum +")\"class='btn btn-primary'>" + info.username + " " + permission + " " + notes + "<br> " + z + "</button>"); 

        } 
       }); 

cが編集されていません。しかし、$.ajax()の中に私がconsole.log(c)を入れたとき、それは私に適切な価値を与えます。しかし、console.log()$.ajax()の外にある場合、それは私に 'null'を与えます。私は多くの多くのstackoverflow同様の質問を参照していますが、すべての答えが動作しなかったか、多分私は何かが欠落していた。グローバル変数を上書きしないAJAX

var z = null; 
switch(info.stars) {.... 

完了するには、AJAXリクエストをお待ちしています:

答えて

0

あなたはからのコードがあると仮定していますか?もしそうなら、それはそれがどのように機能するかではありません。

Ajaxは非同期的にリクエストを発行しますが、コードの残りの部分は実行され続けます(同期をとるべきであると指定しないと仮定すると、それは良い考えではありません)。

AJAXによって返された値を処理する場合は、完了時に実行されるajax options successプロパティなどにこのコードを追加する必要があります。

0

$ .ajaxは、即座に返される非同期メソッドですが、バックグラウンドでHTTPリクエストが完了した後に成功関数とエラー関数を実行します。

コードを$ .ajaxメソッドの中で呼び出される独自の関数に移動する必要があります。以下は例です。

$.ajax({ 
    url: "assets/getExpiration.php?expiry=" + info.expiration, 
    type: "GET", 
    dataType: "text" 
}, function (data) { 
    c = data; 
    var z = null; 
    switch(info.stars) { 
     case 0: z = "<img src='assets/img/0star.png'/>"; break; 
     case 1: z = "<img src='assets/img/1star.png'/>"; break; 
     case 2: z = "<img src='assets/img/2star.png'/>"; break; 
     case 3: z = "<img src='assets/img/3star.png'/>"; break; 
     default: z = "<label class='label label-danger'>" + c + "</label>"; break; 
    } 

    var notes = a.length > 0 ? "<i class='fa fa-file'></i>" : ""; 
    var permission = b.length > 0 ? "<i class='fa fa-warning'></i>" : ""; 
    if (info.status == 'EXPIRED') { 
     $("#pendingCall" + info.callNum).append("<button onclick=\"loadPlayer('" + info.playerTag+ "', '" + info.status + "', "+ info.callNum +")\"class='btn btn-danger disabled'>" + info.username + " " + permission + " " + notes + "</button>"); 
    } else { 
     $("#pendingCall" + info.callNum).append("<button onclick=\"loadPlayer('" + info.playerTag+ "', '" + info.status + "', "+ info.callNum +")\"class='btn btn-primary'>" + info.username + " " + permission + " " + notes + "<br> " + z + "</button>"); 

    } 
}); 
+0

「$ .ajax(設定、コールバック);」という署名はありません。 – Mikey

関連する問題