0

我想要实现的是 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() 函数的每个循环中更改全局变量?
4

2 回答 2

0

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

于 2013-08-19T16:05:33.073 回答
0

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

于 2013-08-19T17:37:53.567 回答