2012-09-26 54 views
0

我一直在寻找并阅读大约3个小时,但无法使其工作。我想从函数中获得一个值,所以我可以使用它来执行另一个函数。我读过,我必须创建一个回调,但我是新的,所以我没有太多的想法如何做到这一点。你们能帮我吗?如何从ajax函数获取值以执行另一个

这是从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 is not defined if (data.length > 1) {

问候,

+0

你能确认'data'实际上是一个JSON数组吗?尝试'console.log(JSON.stringify(data));'看看有什么说的。 – Femi

+1

我假设你知道你可以从函数(数据)块内调用另一个函数?只要在那里做一个有条件的检查,然后调用你想要的任何函数。 – ICoffeeConsumer

+0

@AlexReidy非常感谢...我忘了! –

回答

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等

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方法并处理你的代码即可。

相关问题