Обновление страницы в реальном времени - PullRequest
3 голосов
/ 20 декабря 2011

Мне нужна помощь, это то, что я на самом деле пытаюсь сделать.У меня есть два файла.«index.php» и «realtime.php» index.php отображает новости из конкретной страны по параметру url «country_code», а realtime.php обновляет список новостей каждые 2 секунды.я хочу, чтобы realtime.php получал текущий параметр url для index.php, чтобы он мог обновлять новости только из этой конкретной страны по параметру url.Мне действительно нужна эта помощь.Еще раз спасибоскрипт для index.php

<script type="text/javascript">
$(document).ready(function () {
    $.arte({'ajax_url': '../realtime.php?lastid='+$('.postitem:first').attr('id'), 'on_success': update_field, 'time': 1000}).start();
    function update_field(data)
    {
        $("#realtimeupdate").html(data);
    }
});

</script>

и скрипт для realtime.php

<?php

include"customDB.php";
$lastid = $_REQUEST['lastid'];
$query = 'SELECT count(*) as newpost FROM wp_posts WHERE country_code = "XXXXX" AND   post_id > "'.$lastid.'"';
$result = mysql_query($query);
$rec = mysql_fetch_object($result);
if($rec->newpost){ ?>
<a href="" id="newpostlink">(<?php echo $rec->newpost; ?>) new posts</a>
<script type="text/javascript">document.title = '(<?php echo $rec->newpost; ?>) new posts'</script>
<?php } ?>

Я хочу, чтобы значение country_code = "XXXXXX" в raltime.php было значением параметра urlindex.php Спасибо

Ответы [ 2 ]

4 голосов
/ 20 декабря 2011

Доступ к строке запроса в Javascript

Во-первых, вам нужно получить значение «country_code», которое было передано в качестве параметра строки запроса. Вы можете использовать Javascript следующим образом:

var urlParams = {};
(function () {
    var e,
        a = /\+/g,  // Regex for replacing addition symbol with a space
        r = /([^&=]+)=?([^&]*)/g,
        d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
        q = window.location.search.substring(1);

    while (e = r.exec(q))
       urlParams[d(e[1])] = d(e[2]);
})();

(взято из этого ТАК вопроса )

Теперь urlParams будет выглядеть примерно так:

urlParams = {
    country_code: 'US'
}

Таким образом, вы можете изменить свой AJAX-вызов, чтобы добавить этот параметр:

$.arte({'ajax_url': '../realtime.php?country_code='+urlParams.country_code+'lastid='+$('.postitem:first').attr('id'), 'on_success': update_field, 'time': 1000}).start();

И теперь он будет доступен через PHP под $_GET['country_code'].

Использование переменной в PHP

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

$country_code = mysql_real_escape_string($_GET['country_code']);
$query = 'SELECT count(*) as newpost FROM wp_posts WHERE country_code = "' . $country_code . '" AND   post_id > "'.$lastid.'"';

Обратите внимание, что я написал этот код для соответствия вашему существующему стилю кодирования. Он не очень чистый, поэтому вы можете подумать о его очистке с помощью таких помощников, как $.param() и подготовленные MySQLi операторы.

1 голос
/ 20 декабря 2011

При генерации страницы вы можете отобразить код страны из $ _GET ['country_code'] в скрипт, который вызывает realtime.php.

Или, в качестве альтернативы, на index.php вы можете получить параметр вашей страны из свойства window.location, а затем передать его в качестве параметра realtime.php.

...