AJAX не работает в состоянии готовности, AJAX недостаточно быстро обрабатывает данные? - PullRequest
1 голос
/ 16 июля 2009

http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060405/#xmlhttprequest

4 Загружен Передача данных завершена.

readyState == 4

Я использовал фреймворк ajax из w3schools.

Я хочу обработать данные из группы строк. (поля формы). Я перебираю элементы формы и отправляю их в скрипт ajax. Затем скрипт ajax отправляет данные через php-страницу, которая обрабатывает данные. После завершения обработки данные должны быть отображены обратно на исходную страницу, где была вызвана функция.

Я получаю это сообщение об ошибке: «Данные, необходимые для выполнения этой операции, еще не доступны». и результаты для последней строки отображаются только. Функция работает правильно на отдельных базах, но при попытке перебрать более одной строки возникает ошибка.

function stateChanged5() 
{ 

    if (request5.readyState==4)
    {
        document.getElementById(displayElem).innerHTML=request5.responseText;
    }
    else
    {
        document.getElementById(displayElem).innerHTML=""; 
    }
}

Состояние готовности нарушается, за исключением последнего ряда. Если я попытаюсь поместить приведенную выше строку кода здесь, я получу данные, необходимые для выполнения этой операции, пока недоступны. Так я пришел к выводу, что страница php не обрабатывает данные достаточно быстро, чтобы ajax мог их вернуть и вовремя отобразить для следующей итерации.

Ответы [ 2 ]

1 голос
/ 16 июля 2009

Подождите, пока результаты каждой строки вернутся, прежде чем запустить запрос на следующую.

0 голосов
/ 16 июля 2009

Рекурсия ...

var counter = 0;

function makeRequest() {
  var xhr = // yada yada yada, get your XmlHttpRequest instance
  xhr.onreadystatechange = function() {
    if(this.readyState == 4) {
      // Do whatever, based on the counter variable
      counter += 1
      if(counter < 5)
        makeRequest();
    }
    else {
      // Do whatever, based on the counter variable
    }
  }
  xhr.open();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...