打印

jquery ajax的返回值如何过滤?

引用:
<script LANGUAGE="JavaScript">
$(function(){
$.get("comment.html",function(rt){  
  $("#main").html(rt);
})
})
</script>
我用jquery,在首页通过ajax读取comment.html页面,代码如上面。这个会把comment.html整个页面都显示出来。我只想要comment.html页id为page中的内容,应该如何过滤?
谢谢
如果你有权修改“comment.html”的话,最好在这个文件里面加注释来标记需要取出的内容,这样直接用正则替换就ok,否则需要先把整个comment.html page 的code存过来,然后用dom把需要的部分抓出来。

没用过jQuery,猜想返回的对象应该是rt,相关的处理语句写在$.get("comment.html",function(rt){  这个function里面就ok了。
I'm CN.[CaiNiao]
在想jQuery应该不能细致到lz要的功能都可以做到吧?

期待熟悉jQuery的朋友的解答。
I'm CN.[CaiNiao]

TOP

认证您的手机,获得手机认证图标, 更多手机认证的好处
引用:
原帖由 jubdit 于 2008-1-30 22:35 发表
在想jQuery应该不能细致到lz要的功能都可以做到吧?

期待熟悉jQuery的朋友的解答。
谢谢,jubdit。
我有权限修改comment.html。自己的博客,只会css,js没怎么用过。
jQuery应该可以达到过滤的目的。
有熟悉jq的老大请指点。

网上搜到下面这些,按这个弄,没搞出来:
引用:
求助:filter在Firefox里出错,不知道是不是我写的不对?

var stext = $(data).filter('#content').html();

data是通过ajax取回的内容,我想进行筛选,只要取回内容里的ID为content的部分。
这样的写法在IE里一切正常,不知道为什么在Firefox里就不行,用Firebug来进行查找错误,提示是jquery-1.2.1.js里第1521 行的“f = eval('false||function(a,i){return ' + f + '}');”这段有问题,不知道是不是BUG,也不知道该如何处理。折腾N久,近乎崩溃了!没办法,本人刚接触jQuery,还是个小菜鸟。


这个问题已经自己解决!
不知道有没有人遇到同样的问题,但我想还是分享一下自己的经验!
用filter 进行筛选的时候,固定的数据如 march.hu 所说的那个(var data = "<p>第一段</p><p id='second'>第二段</p>";),这种没有关系,但用AJAX取回动态数据进行筛选的时候,必须同时指定标签类型和 ID,才能正常进行筛选,要不然在Firefox下会出错。
错误的:var stext = $(data).filter('#content').html();
正确的:var stext = $(data).filter('div#content').html();
呵呵,说个题外话,看到lz帖的jQuery的这段code,就越发对jQuery没兴趣了。。
f = eval('false||function(a,i){return ' + f + '}');

效率太低的话,做比较复杂的程序就不太合适了。。

[ 本帖最后由 jubdit 于 2008-1-30 23:00 编辑 ]
I'm CN.[CaiNiao]

TOP

引用:
原帖由 jubdit 于 2008-1-30 22:52 发表
呵呵,说个题外话,看到lz帖的jQuery的这段code,就越发对jQuery没兴趣了。。
f = eval('false||function(a,i){return ' + f + '}');

效率太低的话,做比较复杂的程序就不太合适了。。
程序自带的。没办法呵呵

TOP

comment.html页id为page中的内容:

应该可以根据返回的
然后用find去寻找 #page
www.cssrain.cn

TOP

<script LANGUAGE="JavaScript">
$(function(){
$.get("comment.html",function(rt){  
  $("#main").html(rt);
//接着来
var contobj =  document.createElement("div");//定义一个新的东东
    contobj.id="myid";
    contobj.innerHTML=rt;//加入 html JS 也可以加入
    $(contobj).find("#page").appendTo("body");//加入新的数据
})
})
</script>
http://www.qlili.com 个人站帮点啊

TOP

回7楼的,不能用find 找到数据,IE下怎么玩都行,都能得到你想要的灵气,FF就是个垃圾完全不支持XML文件的操作,开发文档也没有.什么都不能显示出来.
http://www.qlili.com 个人站帮点啊

TOP

引用:
原帖由 skybot 于 2008-1-31 09:39 发表

$(function(){
$.get("comment.html",function(rt){  
  $("#main").html(rt);
//接着来
var contobj =  document.createElement("div");//定义一个新的东东
    contobj.id="myid";
    contobj.inne ...
多谢,不过comment.html中的内容还是显示到了#main中,没有达到过滤的目的。

TOP

截取html字符串中的一段,只靠标签元素或其属性来截取是很麻烦的,特别是很难匹配到结束符,如</div></p>等,即使能找到,其效率也相当有限。

既然lz有权限控制 comment.html ,何不在 comment.html 上做功夫,在你需要的区段外加一些特殊的注释字符串做标识<!--comment begin-->,<!--comment end-->。然后在ajax的返回值中根据上面的标识用 substring 就搞定了嘛。
------ 我的博客 ------
http://www.happyshow.org

TOP

没搞定,换成框架加标记来弄了。
js真难啊。

TOP

可以试一下使用XML和DOM配合操作。我试一下,如果成功了告诉你。

[ 本帖最后由 chensulong 于 2008-1-31 16:33 编辑 ]

TOP



 提示:您可以先修改部分代码再运行
注意,因为服务器没有声明编码,所以乱码了。。html最好是utf-8的。。不然会乱码。。

[ 本帖最后由 willko 于 2008-1-31 16:44 编辑 ]

TOP



ff only.....

TOP

过滤文本,为啥不用正则?

TOP

全部用utf-8的不会乱码

willko  的方法是正确的,我就是用这种方法来分开执行SCRIPT和HTML的
http://www.qlili.com 个人站帮点啊

TOP

$("p").parent("#page")

TOP