1

ajaxの成功部分に変数があり、それを別の関数(3秒ごとに実行される)で再利用したいので、グローバルに宣言しようとしましたが、機能しません。Tdataは不明です。$ .ajaxが非同期関数であることを知っていて、私のような投稿をいくつか見ましたが、役に立ちませんでした。

お願い助けて。ありがとうございました。

これは私のコードの一部です:

<script language='Javascript'> 
var Tdata;


$.ajax({
            method : "GET",
            url: "load-data.php",
            success : function(data){
                Tdata=jQuery.parseJSON(data);
                          ////
            }

});

window.setInterval(function() { 

    $(window).load(function() {

                $.each(Tdata, function(variable) {  
                /////////////
                });

    }); 

}, 3000);


</script>
4

4 に答える 4

3

インターバルを開始する前に、AJAXリクエストがデータを正常に返すまで待ってみませんか?インターバルの関数を実行しても(データがないため)何も実行されないため、その時点まで待機しても、ページの機能が変わることはありません。

$.ajax({
    method: "GET",
    url: "load-data.php",
    dataType: "json"
    success: function(data) {
        var Tdata = data;
        // do some more stuff with the response of the AJAX request
        var interval = setInterval(function() {
            $.each(Tdata, function(variable) {  
                // do something with variable
            });
        }, 3000);
    }
});

間隔が実行されるたびにウィンドウへのイベントのバインドを削除したことに注意してくださいload。そうすることは実際には意味がないように思われるためです。また、渡されたオプションオブジェクトにdataType値を持つプロパティを追加したので、応答をJSONとして自分で解析する必要はありません。json$.ajax()

于 2012-09-27T13:43:59.740 に答える
2

AJAX呼び出しからの変数を使用する関数は、次のようにAJAX成功の内部から呼び出す必要があります。

$.ajax({
        method : "GET",
        url: "load-data.php",
        success : function(data){
            Tdata=jQuery.parseJSON(data);
            myFunction();
        }
});

function myFunction(){
        var interval = setInterval(function() { 
                $.each(Tdata, function(variable) {  
                /////////////
                });
        }, 3000);
}
于 2012-09-27T13:41:56.597 に答える
2

これを試して、

<script language='Javascript'> 
var Tdata;


$.ajax({
            method : "GET",
            url: "load-data.php",
            success : function(data){
                Tdata=jQuery.parseJSON(data);
                          ////
            }

});

 $(window).load(function() {
window.setInterval(function() { 



                $.each(Tdata, function(variable) {  
                /////////////
                });



}, 3000);
 }); 

</script>
于 2012-09-27T13:44:45.730 に答える
1

コールバックtdataAjax関数ajax成功メソッドの実行です。@param parseJSON

var tdataAjax = function(callback) {

    $.ajax({
        method : "GET",
        url: "load-data.php",
        success : function(data){

            var Tdata=jQuery.parseJSON(data);

            setInterval(function() { 

                callback(Tdata);
            }, 3000);

       }

    });
};

tdataAjax関数のコールバック関数@paramデータです

tdataAjax(function(data) {

        $.each(data, function(variable) { 

            // code
        });
});

tdataAjax ++ :)

 tdataAjax(function(data) {

        $.each(data, function(variable) { 

            // cla bla
        });
});
于 2012-09-27T13:44:57.867 に答える