2012-02-06 5 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); 
    } 



    }); 

나는 그것을 위해 구글에서하고 그것의 보안 문제를 밝혀를 만들고이 스크립트를 "권한이 거부되었습니다"제공합니다. 왜냐하면 reqeust (출력)는 다른 도메인 (Bing)에서 왔습니다. 나는 많은 일을 시도했지만 운이 없었습니다. 아무것도 다른하지만 ​​일반 HTML 거기에 그녀의에서

<!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> 

: 이 그렇게 내 문서 타입하고있다. 이 서비스가 지원 jsonp을하지 않는

답변

1

이 작업을 수행해야합니다

  1. 은 서버에 PHP 파일에 아약스 - 전화를 겁니다. 당신의 PHP 파일에서
  2. 당신은 쿼리 출력에서 ​​결과가 너무 자바 스크립트는이
  3. 완료를 액세스 할 수있는 첫 번째 게시물에
  4. 형식을 게시 -statement 원래 jsonp으로 컬을 사용!
+0

우회로처럼 보입니다. 나는 좀 더 직접적인 (그리고 단순한) 레코드를 원했다. 다른 모든 브라우저에서 잘 작동합니다. – Youss

+0

액세스하려는 사이트가'jsonp'를 지원하지 않는 한 가능합니다 (그렇지 않은 것처럼 보입니다). cURL 만 가능합니다. – OptimusCrime

+0

크롬, 파이어 폭스, 사파리 등에서 작동하기 때문에 가능합니다. – Youss

0

XMLHttpRequests는 웹 브라우저에서 사용하는 same origin policy로 인해 도메인 간 요청을 할 수 없습니다. 대신 JSONP을 사용하십시오.

+0

그러면 다른 모든 브라우저에서 어떻게 작동합니까? – Youss

+0

나는 그것의 전형적인 'IE는 반드시 죽어야한다'고 생각한다. :) – Youss