0

私は約3時間探して読んでいましたが、うまくいきません。関数から値を取得したいので、それを使用して別の関数を実行できます。コールバックを作成する必要があると読みましたが、これは初めてなので、その方法がよくわかりません。皆さん、私を助けてくれますか?

これは、php からデータを取得するコードです。

                $.getJSON(callback_url, {
                ajax_action: 'list', 
                ajax_data: ''
            },   function(data){

            document.getElementById('ajax-box').innerHTML = "";

            for(i=0;i<data.length;i++){

                document.getElementById('ajax-box').innerHTML += '<div> Some data loaded here</div>';

            }
            }); 

このコードの後、次のようにデータ長が「1」より大きい場合、新しい関数を実行したいと思います。

 if (data.length > 1) { some function here}    

エラーが発生します:

ReferenceError: データが定義されていない場合 (data.length > 1) {

よろしく、

4

2 に答える 2

0
function doAjax(postUrl,postBody,callback){
$.ajax({
        type: 'post',
        url: postUrl,
        data: JSON.stringify(postBody),
        contentType: "application/json; charset=utf-8",
        traditional: true,
        success: function (data) {
        callback(data);
        },
        error: function (xhr, ajaxOptions, thrownError) {
           callback(thrownError);
        }
     });
}
doAjax(callback_url,{request_body_json},function(data){
       document.getElementById('ajax-box').innerHTML = "";
       for(i=0;i<data.length;i++){
         document.getElementById('ajax-box').innerHTML += '<div> Some data loaded here</div>';
    }
});

この方法が最適です。doAjax メソッドを使用してコードを処理するだけです。

于 2012-09-26T04:37:49.883 に答える
0

のスコープが のdata外にないため、エラーが発生していますajax call

ajax 呼び出しの外に変数を保持し、それを使用してデータにアクセスします

var d;
                $.getJSON(callback_url, {
                ajax_action: 'list', 
                ajax_data: ''
            },   function(data){
            d = data; // added in your code
            document.getElementById('ajax-box').innerHTML = "";

            for(i=0;i<data.length;i++){

                document.getElementById('ajax-box').innerHTML += '<div> Some data loaded here</div>';

            }
            }); 
// use your d here

また、getElementById の代わりに jQuery、user $("#") などを使用する場合は、より良いコードを作成することを強くお勧めします。

于 2012-09-26T04:34:09.730 に答える