Обновите несколько div с помощью AJAX

Я пытаюсь обновить многие div в таблице html. Я взял пример кода из https://www.easy-coding.de/wiki/Entry/64-Mehrere-DIV-Container-mit-AJAX-aktualisieren/, и в целом он работает как надо.

Каждый div, который необходимо обновить, имеет уникальный идентификатор (например, «s-1», «s-2», «s-3», ...) и содержит следующий фрагмент скрипта:

<div id = "s-<?php echo $contact_array_row['id']; ?>">initial content</div><script type = "text/javascript">up.push('s-<?php echo $contact_array_row['id']; ?>');</script>

Это мой модифицированный java-скрипт обновления:

/**
 * xxx [..] by http://www.easy-coding.de
 * 
 * @param url
 * @param poll      
 */
function UpdateManyDivs(url, poll, tab) {
    this.url = url;
    this.poll = poll ? poll : 750;
    this.list = [];
    this.timer = null;
    this.tab = tab;

    /**
     * adds elem
     * @param   id      string as id
     */
    this.push = function(id) {
        this.list.push(id);
    };

    /**
     * sends single request
     * @param loop  boolean     
     */
    this.fire = function(loop) {
        ajaxPost(this.url + '?' +this.list.join('&'), 'seed='+ new Date().getTime() + '&tab=' + tab, function(up) {
            return function() {
                if (this.readyState == 4 && this.status == 200) {
                    if (loop) {
                        // start timer
                        up.start();
                    }

                    var data = eval('(' + this.responseText + ')');
                    for(var key in data) {
                        document.getElementById(key).innerHTML = data[key];
                    }
                }
            };
        }(this));
    };

    /**
     * stops auto updater
     */
    this.stop = function() {
        window.clearTimeout(this.timer);
    };

    /**
     * starts auto updater
     */
    this.start = function() {
        this.timer = window.setTimeout(function(up) {
            return function() {
                up.fire(true);
            };
        }(this), this.poll);
    };

}

Он вызывается со следующим однострочником:

var up = new UpdateManyDivs('include/callback.php', 1000, event_id);

Проблема в том, что большая часть данных записывается в переменную $ _GET. Если таблица, содержащая div, слишком велика, она больше не работает. Вместо этого я хотел бы использовать переменную $ _POST и поэтому изменил следующую строку:

ajaxPost(this.url + '?' +this.list.join('&'), 'seed='+ new Date().getTime() + '&tab=' + tab, function(up) {

... к этому:

ajaxPost(this.url, '?' +this.list.join('&') + '&seed='+ new Date().getTime() + '&tab=' + tab, function(up) {

В моем PHP-скрипте обратного вызова я изменил следующий цикл foreach:

foreach(array_keys($_GET) as $identifier) {
    $identifier_array = explode("-", $identifier);
    $data[$identifier] = getStatusMYSQL($identifier_array[1],$identifier_array[0],$_POST['tab']);
}

... к этому:

foreach(array_keys($_POST) as $identifier) {
    $identifier_array = explode("-", $identifier);
    $data[$identifier] = getStatusMYSQL($identifier_array[1],$identifier_array[0],$_POST['tab']);
}

К сожалению, это не работает, и после нескольких часов попыток исправить это у меня закончились идеи.

Я что-нибудь пропустил?

Спасибо, Relkai

Я почти уверен, что удаление одного амперсанда не приведет к изменению функции от перехода к публикации.

Nielsvh 10.09.2018 17:02

Поскольку переменная tab уже записана в $ _POST, я подумал, что можно будет переместить в нее и другие данные. Но, очевидно, вы правы. К сожалению, мои знания JavaScript не очень хороши, и я не могу найти способ переключить его на $ _POST.

relkai 10.09.2018 17:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
116
0

Другие вопросы по теме