jQuery $ .getJSON için geri arama adlandırılmış işlevini kullanarak Facebook istek imzalama taleplerini karşılamak için

oy
3

Ben jQuery ile Facebook API Admin.getMetrics yöntemi erişmeye çalışıyorum. Ben doğru (Uygulamamı gizli gizli tutmak amacıyla), sunucu tarafında istek url oluştururken ediyorum. Sonra kullanarak isteği olmaya tarayıcıya üzerinde url yolluyorum jQuery.getJSON().

Facebook benim orijinalliğini doğrulamak için, istekle birlikte başvurum sır ile karma benim istek parametreleri tümünün bir kopyasını göndermesini gerektirir. Sorun jQuery zaman veri döner çağrılacak Eğer geçmek anonim işlevine verir adıyla eşleşmesi için geri arama işlevi kendisinin adını oluşturmak isteyen olmasıdır. Bu nedenle, fonksiyonun adı kadar mevcut değildir jQuery.getJSON()yürütür ve Facebook nedeniyle uyumsuz imza (O kadar üretilen değildi çünkü doğru geri arama param içermez birlikte göndermek imzasına asılsız olmak benim isteği dikkate jQuery.getJSON()ran).

Ben bu sorunu dışında aklınıza gelebilecek tek yolu bir şekilde benim işlevin adını belirtmektir jQuery.getJSON()o gizli kalmasını sağlayarak yerine. Ama jQuery AP bu işleme herhangi bir seçenek bulamıyorum.

Oluştur 15/10/2008 saat 00:21
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
1

Sen çağrılan işlev adı, aşağıdaki şekilde belgeler düzeltmek sağlayacak $ .ajaxSetup için JSONP seçeneği geçirebilirsiniz:

jsonp Dize
bir jsonp isteğinde geri çağırma işlevi adını geçersiz kılar. Bu değer '= callback'inde?' Yerine 'geri arama' arasında kullanılacak bir GET veya POST için veri için url sorgu dizesi bir parçası. Yani {jsonp: 'onJsonPLoad'} neden olacaktır 'onJsonPLoad =?' Sunucuya geçti.

Buraya bakın http://docs.jquery.com/Ajax/jQuery.ajax#options fazla ayrıntı için

Cevap 15/10/2008 saat 00:47
kaynak kullanıcı

oy
0

Bu sabit geri arama ile daha iyi bir çözümdür:

window.fixed_callback = function(data){
    alert(data.title);
};

$(function() {
    $.getScript("http://api.flickr.com/services/feeds/photos_public.gne?tags=cats&tagmode=any&format=json&jsoncallback=fixed_callback", function(data) {
    alert('done'); } );
});

Bu geri arama ile sorun fonksiyonu küresel kayıtlı olduğu gibi sadece bir defada talep bir tür işleyebilir olduğunu. geri çağırma işlevi muhtemelen almak ve uygun işlevini diyebiliriz farklı veri türleri için bir memuru dönüşme olurdu.

Cevap 15/10/2008 saat 16:26
kaynak kullanıcı

oy
2

Kullanımı jQuery.getScriptortaya çıktı yakın olmak - ama tamamen değil - cevap. GetScript kullanma istek parametreleri dinamik adlı anonim işlev eklemek için jQuery'nin ihtiyacını ortadan kaldırır (hala yapacak olsa o devam edebilir ve yukarıdaki kodda olduğu gibi o isimsiz işlev geçerse). Ancak, varsayılan jQuery.getScriptjQuery'nin Ajax kitaplıktaki diğer tüm çağrıların olduğu gibi, bir başka ek argüman eklemektir _=12344567(1234567 gerçekten bir zaman damgası olduğu). jQuery yanıtı önbelleğe tarayıcıyı önlemek için bunu yapar. Ancak, bu ek sonları isteğin benim imza sadece Otomatik olarak adlandırılmış geri arama işlevi gibi.

#jquery bazı yardımıyla, tek yolun değil karışıklık hiç senin parametreleri içeren jQuery almak için o tabanı kullanılarak isteği yapmaktır öğrenilen jQuery.Ajaxaşağıdaki argümanlarla yöntemi:

jQuery.ajax({
  url: fbookUrl,
  dataType: "script",
  type: "GET",
  cache: true,
  callback: null,
  data: null
});

(burada fbookUrlben imza ve dahil olmak üzere tam parametreleri içeren istemek için çalışıyorum Facebook API url'dir callback=myFunction). dataType: "script"Arg çıkan JSONP yürütülmesi için sayfadaki bir komut dosyası etiketine dolması gerektiğini belirtir, cache: truejQuery tarayıcı zaman damgası parametrenin eklenmesini atlamak için, yani yanıtı önbelleğe izin söyler.

Cevap 15/10/2008 saat 17:12
kaynak kullanıcı

oy
3

Benim için çalışma yaptı tek şey aşağıdaki ayarlar vardı

jQuery.ajax({ url: fbookUrl, dataType: "jsonp", type: "GET", cache: true, jsonp: false, jsonpCallback: "MyFunctionName" //insert here your function name });

Cevap 18/05/2011 saat 13:30
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more