2011-12-05 29 views
5

yahoo otomatik tamamlama almaya çalışıyorum.jQuery: Yahoo Otomatik Tamamlama/Otomatik Düzeltme

$("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]) 
       } 
      }) 
     } 
    }); 

Ve burada bir örnektir:: Ben var http://ff.search.yahoo.com/gossip?output=fxjson&command=query

: http://jsfiddle.net/yQbdb/

birisi bir hata ya da ne ben yanlış yapıyorum olduğum nokta Can

Yahoo'nun JSON url şudur ? İşe yaramalı. Benim için outputjsonp için çalışmalarını ayarlama

Teşekkür

+0

Vay canına, bir böcek gibi görünüyor. – noob

cevap

1

.

Çıkışın yapısı için bkz. example query.

Açıklama aşağıdadır.

Kod 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); 

      } 
     }); 
    } 
}); 

Açıklama: dataType: "jsonp" jQuery kullanarak

çıkış biçimi JSONP olmasını bekler. output: "fxjson" kullanarak kodunuzdan bir çağrı yaptığınızda, URL this gibi görünüyor, ancak çıktının geçerli bir JSONP olmadığını görebilirsiniz, çünkü geri arama çağrılmadı. Sorgu this gibi görünür ve çıkış görebileceğiniz gibi output: "jsonp" belirtmek Öte yandan

geçerli JSONP olduğunu - geri arama çağrıldı.

Bir Amazon örneğini yorumlara bağladınız. $.ajax() arayarak this gibi URL'yi deneyebilirsiniz. Amazon'un web servisinin çıkışı geçerli bir JSONP'dir, çünkü tüm verilerle geri arama çağrılmaktadır.

Sonuç olarak: parametresini $.ajax()output: "jsonp" ile yapılandırarak URL webservices JSONP biçiminde dönecektir. Amazon'un web servisi herhangi bir ek parametre olmaksızın bu formatı varsayılan olarak döndürür. Bu, web servisine özel yapılandırmadır ve belgelerine veya diğer ilgili kaynaklara danışılmalıdır.

JSONP tarafından sağlanan bilgiler HERE.

+0

Peki bu doğru ama benim için mantıklı değil. Onu bana yıkabilir misin, ben de onu gelecekte de kullanabilir miyim? Çünkü ben ebay'ın autosuggest kullanıyorum hayal edin: hiçbir çıkış vardır http://anywhere.ebay.com/services/suggest/?q=test. Teşekkürler – jQuerybeast

+0

@jQuerybeast Ayar 'çıktı' 'fxjson'' için' $ yapıyordu. ajax 'öfkeli çünkü JSONP geri çağrısı aranmıyordu. Ajax çağrısına bir hata işleyici ekleyerek buldum. Sonra 'çıkışı' değiştirmeye çalıştım ve işe başladı. – kubetz

+0

JSONP, dataType'dan çağrılıyor. Ve çıktıyı jsonp olarak ayarlamanız gerektiğinde, bu nasıl çalışır: http://jsfiddle.net/HaQTA/? – jQuerybeast