2011-03-11 68 views
0

我有一個我正在構建的頁面,它主要使用AJAX。我希望頁面上的搜索是異步的,這樣當用戶輸入時,搜索結果即時更改。我能夠通過在文本框中發送關鍵幀上的AJAX調用來實現這項工作,並且它在Chrome,FF等中運行良好。 我遇到的唯一問題是在IE7中。當你鍵入時,頁面開始變得非常慢,所以我假設可能調用AJAX的函數被打開幾次而沒有關閉,導致頁面變慢。有沒有簡單的方法來做到這一點,我可以基本結束當前的AJAX調用,如果另一個鍵被按下?或者是否有其他原因,IE可能會很慢? 通用代碼是:使用AJAX和Jquery進行異步搜索

$('.search_input').keyup(function(e) { make ajax call and populate results } 

在此先感謝您的幫助。

+1

您可以使用.abort()詳細在這裏:http://stackoverflow.com/questions/446594/kill-ajax-requests-using-javascript-using-jquery – 2011-03-11 17:14:23

+0

只需知道的jQuery 1.5 ajax調用返回一個jqXHR而不是一個XHR,儘管對於像'abort()'這樣的XHR方法仍然具有向後兼容性,您沒有得到返回的XHR。 http://api.jquery.com/jQuery.ajax/#jqXHR – 2011-03-11 17:23:01

回答

0

的youre嗯​​...我有東西就是這樣的,我測試了它在IE7沒有收到任何減速。這裏是我的代碼如下所示:

$("#key").keyup(function(event) { 
     if(event.which != '13') { 
      $.get("hash.php", {key: $("#key").val()}, function(hashes) { 
       $("#hashvalues").html(hashes); 
      }); 
     } 
    }); 

「#鍵」是一個文本輸入框,「hash.php」是當前頁面,而「#hashvalues」是hash.php頁面上的主要div容器。

您是否因任何原因返回了瘋狂的數據量?如果有很多HTML返回,我已經看到IE緩慢下來。

+0

我不會說這是一個INSANE大量的數據,但不幸的是(我目前超出了我的控制範圍)返回的XML非常臃腫,所以也許這就是問題。我會嘗試上面提到的abort()方法。 – Munzilla 2011-03-11 19:08:46

+0

我明白了。祝你好運。而且,如果你不需要所有的XML,你總是可以從返回的數據中選出你需要的,並使用它而不是全部使用它(如果在你的情況下可能的話)。你可以做$('。search_input')。keyup(function(e){「page.php」,{somedata},function(data){data = $(data).find(「只有你需要的內容」) ; $(「container」)。html(data);} – Aaron 2011-03-11 19:21:46

0

使用jQuery.Load()繼續將一個單獨的頁面加載到一個佔位符元素(例如div)中,並且每次傳遞'search_input'的值作爲查詢字符串值。

這會得到新的谷歌搜索的感覺,如果那東西后