Проблема использования вызова ajax одновременно - PullRequest
1 голос
/ 13 января 2011

Теперь у меня есть проблема с вызовом ajax, который заключается в том, что когда веб-страница загружается, в событии onload тела я назначаю ее для вызова функций, которые startCount() и updateTable(), эти две функции содержаткод, который использует вызов ajax для получения данных из БД на стороне сервера.Проблема в том, что когда ajax вернет, он вернет только один вызов, а другой вызов не отвечает.Пожалуйста, помогите мне, что произойдет и как я могу это сделать.

Это загрузка в теле

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

Я использую XMLHttpRequest с обычным JavaScript, я не использую jQuery..

Ответы [ 3 ]

0 голосов
/ 13 января 2011
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();">
0 голосов
/ 13 января 2011

Используйте закрытие 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();
}
0 голосов
/ 13 января 2011

У 'onSuccess' одного вызова инициировать следующий вызов ajax. Таким образом, вы бы позвонили startCount(), и когда он вернется, вы выключите updateTable().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...