2011-12-05 77 views
5

我試圖檢索雅虎自動完成。jQuery:雅虎自動完成/ Autosuggest

雅虎的JSON網址是:http://ff.search.yahoo.com/gossip?output=fxjson&command=query

所以我必須:

$("selector").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "http://ff.search.yahoo.com/gossip", 
       dataType: "jsonp", 
       data: { 
        "output" : "fxjson", 
        "command" : request.term 
       }, 
       success: function(data) { 
        response(data[1]) 
       } 
      }) 
     } 
    }); 

而且這裏有一個例子:http://jsfiddle.net/yQbdb/

可有人發現一個錯誤或我做錯了什麼?它應該工作。

感謝

+0

哇,看起來像一個錯誤。 – noob

回答

1

設置outputjsonp爲我工作。

查看example query的輸出結構。

解釋如下。

代碼是HERE

$("#wd6450").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "http://ff.search.yahoo.com/gossip", 
      dataType: "jsonp", 
      data: { 
       "output": "jsonp", 
       "command": request.term 
      }, 
      success: function(data) { 
       var suggestions = []; 
       // for each element in the data.gossip.results array ... 
       $.each(data.gossip.results, function(i, val) { 
        // .. push the value of the key inside our array 
        suggestions.push(val.key); 
       }); 
       // call response with our collected values 
       response(suggestions); 

      } 
     }); 
    } 
}); 

說明:

通過使用dataType: "jsonp" jQuery的期望的輸出格式是在JSONP。當您使用output: "fxjson"從您的代碼撥打電話時,該URL看起來像this但您可以看到輸出不是有效的JSONP,因爲回調未被調用。

就當你指定output: "jsonp"查詢看起來像this,正如你可以看到輸出另一方面是有效JSONP - 回調被調用。

您在評論中鏈接了一個亞馬遜例子。 $.ajax()那裏的電話會嘗試URL如this。來自亞馬遜的web服務的輸出是有效的JSONP,因爲回調被所有的數據調用。

所以結果是:如果您通過配置$.ajax()output: "jsonp"在URL中提供?output=jsonp參數,雅虎web服務將返回JSONP格式。亞馬遜的web服務默認返回這種格式,沒有任何額外的參數。這是特定於Web服務的配置,必須諮詢其文檔或其他相關資源。

關於JSONP的信息可用HERE

+0

這是對的,但它對我沒有意義。你能否把它分解給我,這樣我可以在將來使用它?因爲想象我正在使用ebay的autosuggest:http://anywhere.ebay.com/services/suggest/?q=test沒有輸出等。謝謝 – jQuerybeast

+0

@jQuerybeast將'output'設置爲'fxjson'正在製作'$。 ajax'生氣,因爲JSONP回調沒有被調用。我通過向ajax調用添加錯誤處理程序來找到它。然後我試圖改變'output'並開始工作。 – kubetz

+0

JSONP正在從dataType中調用。如果你不得不將輸出設置爲jsonp,這是如何工作的:http://jsfiddle.net/HaQTA/? – jQuerybeast