AJAX和一个不起作用的全局变量,我错了吗?

时间:2013-08-19 15:53:15

标签: javascript ajax json jquery

我想要实现的是AJAX将一个客户端的数据加载到一个页面中(这是有效的),然后我在其中一个字段中有一个公司ID。我需要用不同的公司表交叉检查这个(相同的数据库)用名称替换页面上的公司ID。

为了得到这个,我已经将一个全局javascript变量设置为空白然后触发主AJAX请求获取所有初始客户端数据然后在该解析循环(客户端)我需要触发一个函数来检查公司表得到名字。我目前的问题是全局变量没有被设置为第二个AJAX结果。这是我的代码:

var nameresult = "";

function namecheck(id){
var request = new Ajax().sendRequest
    ('../company_check.php',
        { method: 'GET',
          parameters: 'id=' + id,
          callback: namecheckReceived }
    );
}

function namecheckReceived(xmlHTTP){
      var n_data = JSON.parse(xmlHTTP.responseText);
      nameresult = n_data[0].name;
}

function client_call(){
var request = new Ajax().sendRequest
    ('../client_data.php',
        { method: 'GET',
          callback: searchReceived }
    );
}

function searchReceived(xmlHTTP){
      var data = JSON.parse(xmlHTTP.responseText);
      for(var i=0; i<data.length; i++)
          {
              namecheck(data[i].company_id);
             /////spit out all the data in a readable format //////
          }
}

注意:

  1. 只有一个结果会从company_check.php收到,因此没有 在namecheckRecieved()函数中循环。
  2. JS控制台中没有错误。
  3. nameresult变量保持为空白,永远不会 如果我在namecheckRecieved()中警告(nameresult),则更改 功能它吐出我想要的东西,所以为什么不改变它 具有searchRecieved()函数的每个循环的全局变量?

2 个答案:

答案 0 :(得分:0)

我要删除之前的所有评论,并说你只需要一个ajax调用。一切都应该在服务器端完成。这意味着获取公司ID,并使用它来获取公司的名称,然后将所有内容传递回客户端。从它的外观来看,当你第一次访问服务器时,你可以在服务器上进行很多的回调来获取每个公司的名称。这样你就不用担心做两个ajax调用 虽然看起来你做了两次以上的调用,这取决于数据的长度

答案 1 :(得分:0)

试试这个      function namecheckReceived(xmlHTTP){ var n_data = JSON.parse(xmlHTTP.responseText); nameresult = n_data[0].name; client_call(); }