实时页面更新

时间:2011-12-20 07:26:36

标签: php javascript real-time

我需要帮助,这就是我真正要做的事情。我有两个文件。 “index.php”和“realtime.php”index.php根据url参数“country_code”显示来自特定国家/地区的新闻,而realtime.php每2秒更新一次新闻列表。我想要的是realtime.php获取index.php的当前url参数,以便它只能根据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 } ?>

我希望raltime.php中country_code =“XXXXXX”的值为index.php的url参数值 感谢

2 个答案:

答案 0 :(得分:4)

在Javascript中访问查询字符串

首先,您需要获得&#34; country_code&#34;的价值。已作为查询字符串参数传递。您可以使用这样的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]);
})();

(摘自this SO question

现在,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();

现在可以在$_GET['country_code']下通过PHP获得。

使用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 :(得分:1)

在页面生成时,您可以将来自$ _GET ['country_code']的国家/地区代码回显到调用realtime.php的脚本。

或者,在index.php上,您可以从window.location属性获取您的国家/地区参数,然后将其作为参数传递给realtime.php