Обновление <span>контента из внешнего источника с jQuery в WP - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь создать оперативные данные обновления из внешнего источника внутри WP.

Я пытался использовать wp_enqueue_scripts, чтобы включить скрипт на мою страницу. Он действительно появляется там, но не обновляет <span> Я хочу обновить.

Вот код, который есть.

В функциях у меня есть

function my_stats() {   
    if( is_page(7680) ) {
    wp_enqueue_script( 'js-file', 'https://domain/stats.js');
  }
}
add_action( 'wp_enqueue_scripts', 'my_stats' );

Затем статистика . js содержит следующий простой скрипт

$(document).ready(function refreshStats(){
    $("#stats").load("https://domain/stats.php");
    setTimeout(refreshStats, 50000);
});

Я также попытался сделать функцию в статистике. js начинается с jQuery

jQuery(document).ready(function refreshStats() {

Но это все тот же результат.

Кроме того, я не забыл поставить код HTML на странице

<div id="stats">Loading</div>

Если я использую этот код вне WP, он работает, но в WP он просто показывает текст загрузки из <span>. Если я ищу в источнике stats.js, я вижу его.

У меня есть пытался найти какую-то информацию, но все указывает мне на сценарий выше. Я предполагаю, что что-то упустил.

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Проблема, похоже, связана с версией jQuery, с которой поставляется WP. Как-то не хотелось работать с моим скриптом. Я попытался использовать эту версию в автономном экземпляре скрипта, и она тоже не удалась Вот как я пришел к выводу, что это должна быть версия jquery.

Итак, чтобы избежать зависимостей, я выбрал другой подход, который сработал.

Вот код Я использовал.

$(document).ready(function refreshStats(){
    var client = new XMLHttpRequest();
    client.open('GET', '/stats.php');
        client.onreadystatechange = function() {
          document.getElementById("stats").innerHTML = client.responseText;
        }
    client.send();
        setTimeout(refreshStats, 5000);
});
1 голос
/ 12 апреля 2020

Попробуйте добавить 'jquery' в качестве зависимости вашего сценария (см. wp_enqueue_script).

function my_stats() {   
  if ( is_page( 7680 ) ) {
    wp_enqueue_script(
      'js-file',
      'https://domain/stats.js',
      array( 'jquery' ) // <-- jquery as a dependency
    );
  }
}

add_action( 'wp_enqueue_scripts', 'my_stats' );

Также попробуйте заменить оба вхождения $ на jQuery, вот так:

jQuery(document).ready(function refreshStats(){
    jQuery("#stats").load("https://domain/stats.php");
    setTimeout(refreshStats, 50000);
});

Немного вне топики c: Возможно, вы захотите взглянуть на setInterval().

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