首页 > PHP > 使用jQuery实现局部刷新

使用jQuery实现局部刷新

2009年05月11号
查看评论 发表评论 2,661次浏览

实现
真的是太简单了,让我忍不住再次感慨一下jQuery的宗旨:Write Less Do More。看一下实现代码

01.<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"
02.type="text/javascript"></script>
03.<script type="text/javascript" language="javascript">
04.setInterval(function(){$("#cnt").load(location.href+" #cnt");},3000);
05.</script>
06.<body>
07.<div id="cnt">
08.<?php echo date('y/m/d H:i:s').' <span style="color:red">memory usage:</span> '.memory_get_usage()?>
09.</div>
10.</body>

关键就在load方法,看一下官方解释Load HTML from a remote file and inject it into the DOM.
A GET request will be performed by default - but if you pass in any extra parameters then a POST will occur.

In jQuery 1.2 you can now specify a jQuery selector in the URL. Doing so will filter the incoming HTML document, only injecting the elements that match the selector. The syntax looks something like “url #some > selector”. Default selector “body>*” always applies. See the examples for more information.
远程获取文件,然后插入到指定的节点中,默认为get方法,如果有其他的参数,则会使用post方法。jQuery1.2之后的版本可以指定选择器。而我们知道jQuery的选择器之强大是出了名的,所以我们可以获取当前页某一节点的内容,然后插入到该节点中,就实现了局部刷新的效果。

如果你运行上面的这段代码,会发现IE下并没有效果,内容没有更新。这是因为IE有缓存,如果数据源的URL和当前的URL一致,那么IE就不会去更新内容。解决方法也很简单,加一个随机数就好了。最终版本:

01.<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js”
02.type=”text/javascript”></script>
03.<script type=”text/javascript” language=”javascript”>
04.$(function(){
05.
setInterval(function(){$(”#cnt”).load(location.href+”?rnd=”+(Math.ceil(Math.random()*1000))+” #cnt”);},3000);
06.});
07.</script>
08.<body>
09.<div id=”cnt”>
10.<?php echo date(’y/m/d H:i:s’).’ <span style=”color:red”>memory usage:</span> ‘.memory_get_usage()?>
11.</div>
12.</body>

也可以获取同域下的其他文件,并在特定部分显示。如果要跨域获取内容的话,比较方便的方法是调用同域的php文件,然后在该php文件里通过file_get_contents之类的函数去远程抓取,说白了就是充当采集器的角色。

类别PHP 标签
  1. 游客
    发表于 2009年05月22号 09时15分32秒 | 1楼

    “也可以获取同域下的其他文件,并在特定部分显示。如果要跨域获取内容的话,比较方便的方法是调用同域的php文件,然后在该php文件里通过file_get_contents之类的函数去远程抓取,说白了就是充当采集器的角色。”
    我需要实现你说的这个功能,对php函数不熟,我现在只能做到用load函数重载php创建的html文件,我想问一下有没有办法,直接读取php文件的输出,并把它显示在页面的指定位置(局部刷新).

  2. 游客
    发表于 2009年05月22号 09时15分47秒 | 2楼

    sss

  3. zcm211
    发表于 2009年05月22号 09时16分05秒 | 3楼

    sdfs

  4. zcm211
    发表于 2009年05月22号 09时17分47秒 | 4楼

    唉,我白写了那么多,用户名不能为空,做个限制嘛
    “可以获取同域下的其他文件,并在特定部分显示。如果要跨域获取内容的话,比较方便的方法是调用同域的php文件,然后在该php文件里通过file_get_contents之类的函数去远程抓取,说白了就是充当采集器的角色。”

    我向实现你说的这个功能,可我现在只能做到用load读取php生成的html文件,我想问一下有没有办法直接读取php的输出到指定的div块里(局部刷新)。

  5. guolb
    发表于 2009年05月25号 15时29分21秒 | 5楼

    zcm211 :

    唉,我白写了那么多,用户名不能为空,做个限制嘛
    “可以获取同域下的其他文件,并在特定部分显示。如果要跨域获取内容的话,比较方便的方法是调用同域的php文件,然后在该php文件里通过file_get_contents之类的函数去远程抓取,说白了就是充当采集器的角色。”

    我向实现你说的这个功能,可我现在只能做到用load读取php生成的html文件,我想问一下有没有办法直接读取php的输出到指定的div块里(局部刷新)。

    不太明白你的意思?,你可以直接load一个php页面而直接输出即可?

  6. 游客
    发表于 2009年06月02号 22时29分38秒 | 6楼

    博主弄个代码高亮行不行啊,不好复制代码

  7. guolb
    发表于 2009年06月03号 22时04分46秒 | 7楼

    游客 :

    博主弄个代码高亮行不行啊,不好复制代码

    好的,谢谢你的提议!

  8. Jzmotmcx
    发表于 2009年06月26号 10时51分02秒 | 8楼

    PjUyW2 comment4 ,

  9. sanqou
    发表于 2009年08月31号 10时54分10秒 | 9楼

    如果是数据库,也用load方法吗

  10. guolb
    发表于 2009年09月02号 11时50分15秒 | 10楼

    sanqou :

    如果是数据库,也用load方法吗

    是的,一样的道理,你可以定义一个方法,然后用ajax请求

  11. 123
    发表于 2010年01月09号 13时54分34秒 | 11楼

    ding

  12. QQ农场外挂
    发表于 2010年01月13号 02时02分00秒 | 12楼

    我又来支持博主了。呵呵。

  13. 网站推广
    发表于 2010年01月13号 10时30分14秒 | 13楼

    网站推广、网站SEO优化、网络宣传、网络炒作、博客炒作,请联系QQ:781954265,助你成功!

  14. 优酷网看电影
    发表于 2010年01月13号 17时09分04秒 | 14楼

    博主的才华相当的GOOD

  15. 济南拼客网
    发表于 2010年01月14号 01时49分49秒 | 15楼

    不错,大家来交流学习下。

评论页数:
1 2 3 247