最初に私のコード
$(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) で、["1234:John Doe","...","..."] のような JSON オブジェクトを作成します (数字はこのゲストの ID です。重要ではないと思いますが、それについて言及したいだけです)。次に、JSON を jQuery UI のオートコンプリート機能に渡します。
JSON の形式で結果を取得した後、すべてが FF と Chrome で正常に動作し、小さなウィンドウが入力フィールドの下に開き、すべての一致が表示されます。IE9では、まったく機能しないわけではありませんが、結果として完全なJSONオブジェクトを取得することはありません. また、ほとんどの場合、「Sullivan」のような姓を取得するには、「Sulliv」と一致するように名前全体を書く必要があります。FF では「Sul」と書くだけで十分です。
ゲスト データベースには、約 8.1k のエントリがあります。IE はそれほど大きな JSON を処理できませんか、それともスクリプトを改善する必要がありますか。IE と JSON または jQuery の共通の問題ですか?