同时使用ajax调用的问题

时间:2011-01-13 17:41:17

标签: javascript ajax

现在,我遇到了ajax调用的问题,当加载网页时,在body的onload事件中,我将其指定为调用startCount()updateTable()这个函数两个函数包含使用ajax调用从服务器端的DB获取数据的代码。问题是当ajax返回时它只返回一个调用而另一个调用没有响应。请帮助我解决发生的事情以及如何解决问题。

这是身体上的onload

<body onLoad="setAjaxConnection();startCount();updateTable()">

我使用XMLHttpRequest和普通的javascript,我不使用jQuery ....

3 个答案:

答案 0 :(得分:0)

让一个呼叫的'onSuccess'启动下一个ajax呼叫。因此,您可以致电startCount(),当它返回时,您将关闭updateTable()

答案 1 :(得分:0)

function setAjaxConnection(){
    //call Ajax here
    setAjaxConnectionResponce;
}

function setAjaxConnectionResponce(){
    //on readystate==4
    startCount();
}

function startCount(){
    // code for count
    updateTable();
}

function updateTable(){
    // code for update
}

<body onLoad="setAjaxConnection();">

答案 2 :(得分:0)

使用javascript闭包。这个链接可能有帮助

http://dev.fyicenter.com/Interview-Questions/AJAX/How_do_I_handle_concurrent_AJAX_requests_.html

function AJAXInteraction(url, callback) {
    var req = init();
    req.onreadystatechange = processRequest;

    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }

    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200) {
          if (callback) callback(req.responseXML);
        }
      }
    }

    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }

    this.doPost = function(body) {
      req.open("POST", url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      req.send(body);
    }
}

function startCount() {
  var ai = new AJAXInteraction("/path/to/count.php", function(){alert("After startCount");});
  ai.doGet();
}

function updateTable() {
  var ai = new AJAXInteraction("/path/to/update.php", function(){alert("After updateTable");});
  ai.doGet();
}