Проблема Ajax не отображает данные с использованием нескольких вызовов JavaScript - PullRequest
0 голосов
/ 09 ноября 2009

Я пишу приложение, которое использует ajax для извлечения данных из базы данных mysql с использованием php. Из-за характера приложения пользователь щелкает ссылку href с событием «onclick», используемым для вызова javascript / ajax. Я извлекаю данные из mysql, затем вызываю отдельную функцию php, которая создает небольшую HTML-таблицу с необходимыми данными. Новая таблица передается обратно в responseText и отображается внутри тега div. В таблицах содержится всего около 10-20 строк данных. Эта функциональность работает нормально и отображает данные в формате HTML точно так, как это должно быть на странице.

Проблема заключается в следующем. Событие HREF «onclick» должно запускать несколько сценариев один за другим. Первый скрипт обновляет «существующие» данные, а внутри функции «update_existing» - это вызов для обновления раздела страницы обновленным HTML-кодом из responseText. Затем, когда это делается, вызывается функция display_html, которая также обновляет другой раздел страницы с помощью вновь созданной таблицы HTML. Событие выглядит так:

Обновление

Эта строка создается динамически с использованием php с предоставленными параметрами, но для этого примера я просто вынул параметры, чтобы они не запутались.

Функция "update_existion () фактически вызывает функцию display_html (), которая обновляет раздел страницы по мере необходимости. Мне нужно обновить другой раздел страницы одним и тем же щелчком мыши сразу после обновления, что почему я снова вызываю display_html (), сразу после него. Проблема в том, что на моем экране обновляется только последний вызов. Другими словами, второй вызов функции "display_html ()" выполняется и отображает обновленные данные очень хорошо , но предыдущий вызов update_existing () запускает и корректно обновляет базу данных, но не отображается на экране, пока я не нажму кнопку «обновить» в браузере, которая, конечно, отображает новые данные именно так, как я хочу, но я Я не хочу, чтобы пользователям приходилось нажимать кнопку «обновить». Я попытался добавить несколько вызовов «display_html () один за другим, разделяя их все точкой с запятой, и узнал, что только самый последний вызов функции фактически обновил элемент div на html-странице с таблицей информация, хотя все предыдущие вызовы display_html () работали, их нельзя было увидеть на странице без обновления браузера.

Это проблема с javascript или вызовом ajax, или это ограничение в DOM, которое позволяет обновлять только один элемент за раз. Вызов ajax является асинхронным, но я пробовал оба, только период асинхронных работ. Это одинаково в Firefox и Internet Explorer

Есть идеи, что происходит и как обойти это, чтобы я мог запустить эти несколько сценариев?

1 Ответ

0 голосов
/ 09 ноября 2009

Я бы порекомендовал вам использовать библиотеку jQuery javascript. У него есть некоторые функции, например live(), которые могут «ждать» появления этой таблицы в браузере и применять к ней остальные функции.

Кроме того, это отличный набор функций, которые, безусловно, помогут вам сократить объем написанного вами кода, сделав его более читабельным для человека.

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