2012-02-06 4 views
0

のために、私はAJAX呼び出し(JSONP)IEは「ERROR」を与えるとAJAX要求

$("#searchbox").autocomplete({ 


     source: function(request, response) { 

     $.ajax({ 

      url: 'http://query.yahooapis.com/v1/public/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); 
    } 



    }); 

を作っているこのスクリプトを持っている「パーミッションが拒否された」私はそれをGoogleで検索していると、それはそのセキュリティ問題が判明します。 reqeust(出力)は他のドメイン(Bing)からのものです。私は多くのことを試みたが運がない。 これには、私のDOCTYPEです:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 
<link href="desktop.css" media="screen" rel="stylesheet" type="text/css" /> 
<link href='http://fonts.googleapis.com/css?family=Asap' rel='stylesheet' type='text/css'> 
<link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script> 
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script> 
<meta charset=utf-8 /> 
<script src="livesearch.js" type="text/javascript"></script> 
<link href='http://fonts.googleapis.com/css?family=Loved+by+the+King' rel='stylesheet' type='text/css'> 

    </head> 

彼女から何もなく、プレーンなHTMLがない上。

答えて

1

このサービスがサポートjsonpをしない限り、あなたがこれを行う必要があります。

  1. は、サーバー上のPHPファイルへのAJAX呼び出しを行います。
  2. あなたはJavascriptを
  3. が完了してアクセスできるように、クエリおよび出力、そこからあなたの結果、あなたの最初の記事で
  4. フォーマットを掲載-statement元jsonpでcURLの使用あなたでは、PHPファイル!
+0

これは迂回路のようです。私はもっ​​と直接的なもの(そして単純なもの)を望んでいた。他のすべてのブラウザで正常に動作します – Youss

+0

アクセスしようとしているサイトが 'jsonp'をサポートしていない限り、これは可能です(そうでないように見えます)、cURLが唯一の方法です。 – OptimusCrime

+0

クロム、ファイアフォックス、サファリなどで動作するので可能です。 – Youss

0

XMLHttpRequestsは、ウェブブラウザで使用されているsame origin policyのためにクロスドメインリクエストを行うことはできません。代わりにJSONPを使用してください。

+0

それでは、他のすべてのブラウザでどのように動作しますか? – Youss

+0

私はその典型的な 'IEは死ぬべきだと思う'問題だと思う:) – Youss

関連する問題