2015-12-15 175 views
0

我已經設置了搜索功能,它將在XSLT文件中進行搜索。這工作完美無瑕,但我有一點麻煩返回與Ajax動態搜索結果。ajax加載搜索結果

這是我的JS:

var SearchHandler = function(frm) { 

     frm = $(frm); 
     var data = frm.find(".search-field").val(); 

     $.ajax({ 
      method: 'GET', 
      url: '/', 
      data: { query: data }, 
      dataType: 'xml', 
      success: SearchSuccessHandler, 
      error: SearchSuccessHandler 
     }); 

    }; 

    var SearchSuccessHandler = function(html) { 


    }; 

我想是的SearchSuccessHandler動態加載從index.php文件查詢的搜索結果=搜索內容

我似乎無法找出正確的方式來處理它。

+0

動態加載結果在哪裏?怎麼樣? – adeneo

+0

Bah ..對不起... ajax調用會根據查詢返回一些新的html ...我想要現有的html被替換 我試過$('body')。html(html.responseText);但後來我無法再搜索,因爲JavaScript沒有正確加載 –

回答

1

基於您的評論:

呸...對不起... AJAX調用將返回基於 查詢的一些新的HTML ...我要被替換現有的HTML我已經試過 $('body').html(html.responseText);後來我因爲JavaScript未正確裝入

當您直接綁定功能元素這樣它不是AJAX這是問題,而是事件代表團

不能再次搜索 :

$('.my-element').on('whatever', function() { ... })

處理程序將工作,只要元素存在然而如果你取代整個機構的內容因爲您的原件.my-element不再存在,您將遇到麻煩。

您可以通過使用事件委託來克服這一點,以確保您的功能可以繼續搜索

$(body).on('whatever', '.my-element', function() { ... })

這基本上說:「如果我點擊的身體和目標.my-element然後執行此功能」 取而代之的是直接綁定處理它說的:如果我點擊此特定元素的」然後執行此功能「

body將永遠存在,因此你將永遠能夠從身體委託下來,但如果你可以做一些更具體的元素,顯然會更好,因爲那樣你就贏了' t hav e整個身體的onclick處理程序。

我認爲這是你的問題,因爲你正在替換整個身體。

0

試試這個

success:function(data) { 
// do your stuff here 
} 

當然,你需要確保你的函數返回一些值。 爲了方便您,編碼在您的index.php值作爲JSON

return json_encode($values) 

然後,你的成功函數中,只需用的eval()解析它