2012-02-06 24 views
1

次のコードはIEで問題を起こしています。 IEはセキュリティ上のリスクがあり、コードが機能しないようにしています。IEでオートコンプリートAJAXリクエストが許可されていません

$("#searchbox").autocomplete({ 
    source: function(request, response) { 
    $.ajax({ 
     url: 'http://query.yahooapis.com/v1/public/streaming/yql', 
     dataType: 'JSONP', 
     data: { 
     format: 'json', 
     q: 'select * from xml where url="http://google.com/complete/search?hl=nl&output=toolbar&q=' + encodeURIComponent(request.term) + '"' 
     }, 
     success: function(data) { 
     if (typeof data == 'string') data = $.parseJSON(data); 
     response(
      $.map(data.query.results.toplevel.CompleteSuggestion, function(item) { 
      return { label: item.suggestion.data, value: item.suggestion.data }; 
      }) 
     ); 
     } 
    }); 
    }, 
    select: function(e, ui){ 
    }, 
    open: function(){ 
    doSearch($('.ui-autocomplete li:first-child a').text(), true, false); 
    $(".ui-autocomplete :first-child a").addClass("ui-state-hover"); 
    $("#searchbox").focus(); 
    return false; 
    }, 
    select: function(e, ui){ 
    $("#searchbox").autocomplete('search', ui.item.value); 
    }, 
    close: function (event, ui) { 
    val = $("#searchbox").val(); 
    $("#searchbox").autocomplete("search", val); 
    } 
}); 

私はいくつかの調査を行っている、それは、この行は私に問題を与えていることが判明:url: 'http://query.yahooapis.com/v1/public/streaming/yql',

は、だから、私は置き換えることができますまたはそれを動作させるために変更するためにどのようなものと思っていました。ここにライブバージョンがあります:JsBin

+0

まず、あなたが持っているコードで2つの選択機能。それが何かをぶち壊すことは確かではない。 2番目の試みは、URLをhttpsに変更しようとしますか? – Henesnarfel

+0

あなたのJsBinリンク上のコンソールで「Uncaught ReferenceError:doSearchが定義されていません」というエラーが表示されます。 – ShankarSangoli

+0

オートコンプリートjqueryイベントは気にしないでください。重要ではないし、問題を引き起こしていません。問題はajaxリクエストです。 – Youss

答えて

2

これは多分私の経験の痛みであるクロスドメインリクエストのようです。

この記事を参照してください...あなたはXDRコール(すべてのIEのバージョンでサポートされていない)を使用する必要があります、またはあなたのホストからのリバースプロキシを使用する必要があります。http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

+0

ありがとう、私はそれを調べます。 – Youss

関連する問題