Как обновить <DIV> - PullRequest
       20

Как обновить <DIV>

2 голосов
/ 13 июня 2009

Как обновить автообновление div внутри div, есть php

Следующий код не работает?

var refresh = setInterval(function() {  $("#recent_activity").html(); }, 1);

Ответы [ 4 ]

14 голосов
/ 13 июня 2009

Основываясь на комментариях x0n, которые я считаю справедливым предположением, я предполагаю, что вы хотите автоматически обновлять <div> контентом с сервера каждые X секунд. В вашем примере ваш второй аргумент функции setInterval равен 1. Это действительно плохая идея, так как задержка в миллисекундах, поэтому вы будете запускать 1000 запросов в секунду (не то, что браузер позволит вам, но до сих пор).

Во всяком случае, если это то, что вы хотите, вам нужно сделать это:

var timer;
var seconds = 30; // how often should we refresh the DIV?

function startActivityRefresh() {
    timer = setInterval(function() {
        $('#recent_activity').load('recent_activity_ajax.php');
    }, seconds*1000)
}

function cancelActivityRefresh() {
    clearInterval(timer);
}

Ваш серверный скрипт (recent_activity_ajax.php в этом примере) должен будет вернуть все, что вы хотите, чтобы <div> был заполнен - ​​только это, а не верхние и нижние колонтитулы или что-то еще. Если вы хотите, чтобы это началось при загрузке страницы, просто позвоните startActivityRefresh:

$(function() {
    startActivityRefresh();
});

Если это совсем не то, что вы имели в виду, обновляя <div>, вам нужно будет уточнить. :)

EDIT

В ответ на ваш комментарий: вы не можете заставить Javascript «обновлять» содержимое динамического кода PHP. Это просто невозможно, так как браузер не может действительно выполнить язык на стороне сервера, такой как PHP. Вы должны снова вызвать сервер. Чтобы сделать это максимально чистым, вам, вероятно, следует переместить код, который заполняет содержимое #recent_activity, в функцию, вызвать ее один раз при загрузке страницы и получить другой файл, который просто выводит этот код, чтобы иметь возможность его динамического обновления. Вы, вероятно, должны посмотреть здесь паттерны MVC, но я не уверен, что вы вполне готовы к этому ...

1 голос
/ 13 июня 2009

http://www.ajtrichards.co.uk/heartbeat/

$(document).ready(function(){
$.jheartbeat.set({
   url: "data.php", // The URL that jHeartbeat will retrieve
   delay: 1500, // How often jHeartbeat should retrieve the URL
   div_id: "test_div" // Where the data will be appended.
}); });
1 голос
/ 13 июня 2009

Вы можете написать что-то вроде этого и вызвать его на document.ready

function refreshMyDiv()
{
   $("myDiv").fadeOut("slow");
   //Code to refresh the content goes here
   //could be a AJAX call
   $("myDiv").fadeIn("slow");
   setTimeout("refreshMyDiv();", 60000);

} 
0 голосов
/ 13 июня 2009

нет ничего о div 'недавняя_активность', который постоянно синхронизируется с вашим сервером. Однако, предположим, что у вас есть динамическая веб-страница Recent_activity.php, которая возвращает текущие данные из вашей базы данных о последних действиях, вы можете время от времени загружать их в div с помощью

var refresh = setInterval(function() { 
    $('#recent_activity').load('recent_activity.php');
}, 1);

P.S. Спам в 1 миллисекунду обычно является плохой идеей. Посмотрите на шаблон кометы, если вы хотите получить ответные действия за секунду.

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