Обновление div в Drupal - PullRequest
       6

Обновление div в Drupal

0 голосов
/ 16 ноября 2011

Я создал модуль, который загружает код JavaScript.Я прочитал в Интернете, что это должно обновить мой div, но это не так, и я не знаю почему.

Это мой код:

.module

<?php
    function div_refresh_init() {
        drupal_add_js(drupal_get_path('module', 'div_refresh') . '/div_refresh.js');
    }

    function dev_refresh_menu() {
        $items = array();
        $items[] = array(
            'path' => 'div_refresh/update',
            'callback' => 'div_refresh_update',
            'type' => MENU_CALLBACK,
            'access' => TRUE,
        );
        return $items;
    }

    function div_refresh_update() {
        $html = get_data();
        print drupal_to_js(array('html' => $html));
        exit();
    }

код JavaScript

function autoupdate() {
    $.ajax(
    {
        type: "POST",
        url: "div_refresh/update",
        cache: false,
        success: function(data) {
            var result = Drupal.parseJson(data);
            $("div.autorefresh").fadeIn("slow").html(result['html']);
        }
    });
}

if (Drupal.jsEnabled) {
    $(document).ready(function() {
        setInterval("autoupdate()", 5000);
    });
}

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Ваш JS выглядит нормально (до тех пор, пока на странице есть класс autorefresh); Я думаю, что проблема в функции обратного вызова меню.

Код, который вы получили, выглядит так, как будто он для Drupal 5, и я собираюсь сделать удар, что вы на самом деле используете Drupal 6? Если это так, ваша реализация hook_menu() должна выглядеть следующим образом:

function dev_refresh_menu() {
  $items['div_refresh/update'] = array(
    'page callback' => 'div_refresh_update',
    'type' => MENU_CALLBACK,
    'access callback' => TRUE,
  );

  return $items;
}

Вы можете подтвердить это, перейдя непосредственно к www.mysite.com/div_refresh/update, если вы получите 404, то у Drupal нет записи вашего пункта меню.

Также не забудьте очистить кеш Drupal, как только вы внесете изменения, иначе новый предмет не будет поднят.

0 голосов
/ 16 ноября 2011

В setInterval избегайте передачи функции как строки, eval - зло;)

setInterval(function() { autoupdate() }, 5000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...