2010-10-07 64 views
1

我已经从一个服务器端的页面返回到客户方网页,其中显示数据下面的脚本:附加时编辑结果?

function getResults() { 
    var search; 
    search = $(".txtSearch").val(); 

    $.ajax({ 
     url: 'search.aspx', 
     type: 'POST', 
     data: { strPhrase:search }, 
     error: function(xhr, status, error) 
     success: function(results) 
     { 
      $("#ResultsContainer").empty(); 
      $("#ResultsContainer").append(results); 
     } 
    }); 
} 

是否有可能检查返回的结果,因为他们正在追加和变更呢?

例如,假设返回的结果是HTML如下:

<div><a href="link1.xls">link 1</a></div> 
<div><a href="link2.xls">link 2</a></div> 
<div><a href="link3.doc">link 3</a></div> 
<div><a href="link4.xls">link 4</a></div> 

是否有可能检查.DOC中的链接,并删除周围的特定链接的完整DIV只剩下?

<div><a href="link1.xls">link 1</a></div> 
<div><a href="link2.xls">link 2</a></div> 
<div><a href="link4.xls">link 4</a></div> 
+1

第一个问题是:你有控制服务器端页面吗? – 2010-10-07 16:02:41

+0

@alin:你说得对。即使是最好的延迟过滤器,如果他可以在服务器端细化结果,也应该避免。 – 2010-10-07 16:18:40

+0

感谢您同意我的观点,但我认为您的错误原因:)。我想知道,为了回答他的第一个问题,这是每个人都避免的问题,只是回答了简单问题。 – 2010-10-07 16:21:20

回答

5

是的,试试这个:

success: function(results) 
    { 
     var $results = $(results); 
     $results.find('a[href$=doc]').parent().remove(); 
     $("#ResultsContainer").empty().append($results); 
    } 

这会将results在一个jQuery对象,把字符串变成DOM元素。

然后它使用jQuery's .find() method来定位嵌套的元素,其中href attribute ends withdoc

然后遍历到它的.parent()元素和calls .remove()

请注意,the .append() method附加被修改的$results。不是原来的results字符串。

+0

谢谢,我会尽快尝试。 – oshirowanen 2010-10-08 05:42:40

0

我自己并没有使用它,但jQuery.ajax需要一个dataFilter成员,这是一个回调,在success处理程序看到它之前清理数据。

退房的文档 - http://api.jquery.com/jQuery.ajax/

0

这将是更好,出于性能的问题,如果你的aspx页面会返回没有“文档”链接HTML片段,即使你以后可以在Ajax回调过滤。

如果你发送一个包含url的简单对象(对非doc文件),因为你有很多冗余代码,这会更好。

+0

我需要根据客户端计算机上包含的文件筛选结果。是的,我同意json在这里最好。 – oshirowanen 2010-10-08 05:44:26

0

如果

,因为他们正在追加

你的意思,而他们是从服务器发送到客户端,我会说可能不会(或不使用jQuery)。原型有回调onInteractive - (Not guaranteed) Triggered whenever the requester receives a part of the response (but not the final part), should it be sent in several packets.可能会这样做,但即使如此,它将很难处理块。

如果你说你有控制发送者,你应该实现一个分页系统:在第一个请求服务器脚本返回你,比如10个结果和总页数。你处理这些结果(如果你想要显示它们),然后请求下一页等等。

此外,您应该通过向脚本发送过滤条件(如果可能的话)在服务器上进行过滤。