2010-10-07 62 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個結果和總頁數。你處理這些結果(如果你想要顯示它們),然後請求下一頁等等。

此外,您應該通過向腳本發送過濾條件(如果可能的話)在服務器上進行過濾。