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: 数据未定义 if (data.length > 1) {

问候,

4

2 回答 2

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

另外,我强烈建议您在使用 jQuery、用户 $("#") 而不是 getElementById 等时编写更好的代码。

于 2012-09-26T04:34:09.730 回答
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 回答