2012-06-01 49 views
1

第一我的代碼jQuery用戶界面自動完成IE問題

$(function() { 
     var suggest; 
     $("#guestname").keyup(function() { 

      $.ajax({ 
       async: true, 
       url: '../include/searchGuest.php', 
       dataType: 'json', 
       data: 'searchTxt=' + $(this).val() + '&festival_id=<?php echo $festival_id;?>', 
       success: function(data) { 
        suggest = data; 
        get_autocomplete(suggest); 
       } 
      }); 
     }); 
    }); 


    function get_autocomplete(suggest) { 
     $("#guestname").autocomplete({ 
     minLength: 3, 
     source: suggest 
     }); 
    } 

我使用這個jQuery的函數來獲取的賓客名單。用戶填寫一個名爲'John'的輸入字段。 Ajax正在爲包含'John'的名字或姓氏的客人搜索數據庫。在同一個腳本(PHP)中,我創建了一個JSON對象,它看起來像[「1234:John Doe」,「...」,「...」](數字是這個客人的ID,猜測那不重要,只是想提一下)。 然後我將JSON傳遞給jQuery UI的自動完成功能。

在FF和Chrome中一切正常,獲得JSON形式的結果後,在輸入字段下方打開一個小窗口並顯示所有匹配項。 在IE9中,它不像它不工作,但我從來沒有得到完整的JSON對象。此外,大多數情況下,我必須寫出幾乎全部的名字才能獲得一場比賽 - 'Sulliv'以獲得像'Sullivan'這樣的姓氏。在FF中足以寫出'Sul'。

在Guest數據庫中有8.1k條目。不能IE處理一個很大的JSON,或者我必須改進我的腳本。這是IE和JSON或jQuery常見的問題嗎?

回答

0

你應該只初始化自動完成構件一次,然後就可以使用source選項在服務器上執行過濾:

$("#guestname").autocomplete({ 
    minLength: 3, 
    source: function (request, response) { 
     $.ajax({ 
      async: true, 
      url: '../include/searchGuest.php', 
      dataType: 'json', 
      data: 'searchTxt=' + request.term + '&festival_id=<?php echo $festival_id;?>', 
      success: function(data) { 
       response(data) 
      } 
     });   
    } 
}); 
  • request.term是用戶搜索術語。
  • response是您必須使用自動完成候選人調用的回調函數。
+0

Atm我在輸入字段中使用'keyup'事件。隨着你的代碼我不知道我應該怎麼稱呼阿賈克斯。 –

+0

愚蠢的問題是愚蠢的。忘了上面那個。它'有效',但我對IE的問題依然存在。這就像IE不能處理JSON。 –

+0

這很奇怪。你能限制你從服務器返回的結果,看看它是否仍然存在? –