2012-06-12 14 views
5

JSQP kullanarak jQuery'nin ajax yöntemini kullanarak veri almayı deniyorum. Eğer kaynak dosya URL açarsanız"(Geri arama yöntemi)" Firefox eklentisinde JSONP erişiminde tanımlanmadı.

Error: jQuery1720502636097747291_1339479763752 is not defined 
Source File: https://secure.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=jQuery1720502636097747291_1339479763752&msg=aaa 
Line: 1 

, sen JSON aşağıdaki görebilir ve doğru JSON görünüyor:

$.ajax({ 
    dataType: "jsonp", 
    url: "https://secure.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json", 
    type: "GET", 
    data: "msg=aaa", 
    cache: true, 
    jsonp: "jsoncallback", 
    // jsonpCallback: "callbackmethod", 

    success: function(encryptedMsg){ 
     console.log("Encryption success!"); 
    }, 
    error: function(req, errmsg, thrownError) { 
     console.log("Error: HTTP " + req.status + " " + errmsg); 
    } 
}); 

Ancak, aşağıdaki hata konsolda hata gösterilir.

jQuery1720502636097747291_1339479763752({ 
    "title": "Recent Uploads tagged cat", 
    // ... 
    "items": [ 
    { 
     "title": "Chaton", 
     // ... 
    }, 
    // ... 
    ] 
}) 

Ben de yöntem jsonpCallback ile adını belirtmek için çalıştı: "callbackmethod", ama işe yaramadı. Ayrıca, $ .getJson() yöntemini ve jquery-jsonp'ı (http://code.google.com/p/jquery-jsonp/) kullandım, ancak sonuç aynıydı.

Tarayıcı Firefox ve HTML4 kullanıyor. Bu, bir firefox eklentisinde kullanılır.

Burada tam kodu okuyabilir: https://builder.addons.mozilla.org/addon/1048275/revision/749
Ben

sayesinde önceden ortak-content.js içinde getEncryptedMessage işlevinde $ .ajax kullanın.

+2

Peki, jsonp geri bildirimini belirtmeden denediniz mi? jQuery bunu sizin için halleder. – alexn

+0

Evet, denedim. Bu kodda flickr'e erişmeyi denedim ve bunu belirtmek zorunda kaldım, ama aslında kendi web uygulamasına erişmek istiyorum. Kendi sunucu uygulamasını kullandığımda "jsonp:" belirtmeden erişmeye çalıştım. –

cevap

3

Firefox eklentilerinde JSONP kullanmayın. Çalışırsa, bazı web sunucusunun uzantınızın bağlamında kod çalıştırmasına izin verdiğinden bir güvenlik sorunu olur. Durumunuzda işe yaramıyor, çünkü content scripts don't access the web page directly. JSONP betiği web sayfasının bağlamında çalışacak ve içerik betiği tarafından tanımlanan işlevleri göremez.

Herhangi bir web sunucusuna istekte bulunmak için request module kullanmalısınız, JSON biçimini destekler. Bunu bir içerik komut dosyasından kullanamazsınız, ancak bir iletiyi uzantıya geri gönderebilirsiniz, uzantı daha sonra isteği yapmalı ve sunucu yanıtını içerik komut dosyasına geri göndermelidir. communicating with content scripts belgelerine bakın.

+0

Oh ... Firefox eklentilerinde JSONP yanlış bir yoldu. Tamam, isteği deneyeceğim. Teşekkürler! –