2012-02-06 89 views
0

我有這個腳本,是使AJAX調用(JSONP)IE提供了「錯誤」和「權限被拒絕」的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. 做一個AJAX調用到您的服務器上的PHP文件。
  2. 在你的PHP文件使用捲曲與原來jsonp語句來在你的第一篇文章發佈
  3. 格式從查詢和輸出你的結果是這樣的JavaScript可以訪問它
  4. 完成!
+0

這似乎是一個繞道。我希望有更直接的東西(和簡單..)爲了記錄;它在所有其他瀏覽器中工作正常 – Youss 2012-02-06 12:24:46

+0

除非您嘗試訪問的網站支持'jsonp',這甚至可能(看起來不是這樣),cURL是唯一的方法。 – OptimusCrime 2012-02-06 12:25:37

+0

它可能是因爲它在鉻,火狐,Safari瀏覽器等工作。 – Youss 2012-02-06 12:28:34

0

由於Web瀏覽器使用same origin policy,XMLHttpRequests不允許發出跨域請求。改爲使用JSONP

+0

那麼它如何在所有其他瀏覽器中起作用呢? – Youss 2012-02-06 12:26:51

+0

我認爲它是一個典型的'IE must die'問題:) – Youss 2012-02-06 12:27:30