SORU
14 Ocak 2010, PERŞEMBE


Hakkında JSONP nedir?

JSON, JSONP ama değil anladığım kadarıyla. Wikipedia's document on JSON () JSONP için en iyi arama sonucu. O şöyle der:

"Dolgu ile JSON bir önek çağrı kendisinin giriş bağımsız değişken olarak belirtilen olduğu açıkça görülmektedir." JSON bir uzantısıdır JSONP veya

Değil mi? Ne diyorsun? Bu bana hiç mantıklı gelmiyor. JSON Veri formatı. Çağrı yok.

Bir adamdan 2nd search result yaklaşık JSONP bu yazan Remy, adlı:

JSONP komut etiketi enjeksiyon, sunucu yanıtı bir kullanıcı işlevi belirtilen geçerken.

Bir bakıma anlıyorum, ama yine de hiç mantıklı değil.


JSONP nedir? Neden yarattı çözüyor mu ne oldu? Ve neden kullanmalıyım?


EkSadece Wikipedia a new page for JSONP yarattık; şimdi JSONP net ve ayrıntılı bir açıklama vardır, jvenema'In cevabı. göre

CEVAP
14 Ocak 2010, PERŞEMBE


Aslında o kadar da karışık değil...

Etki alanı etki alanı example.net bir istek yapmak istiyorum example.com ve sen söyle. Bunu yapmak için, etki alanı sınırları, browserland hayır-hayır En bir geçmek gerekiyor.

Bu sınırlama atlar bir öğe&; script> etiketleri lt. Script etiketi kullandığınızda, etki alanı sınırlaması yok sayılır, ama normal şartlar altında, gerçekten sonuçları ile hiçbir şey yapamazsın, senaryoyu sadece değerlendirmeye alır.

JSONP girin. JSONP etkin olan bir sunucu için istek yaptığınızda, sunucu sayfası hakkında biraz söyleyen özel parametre geçirmek. Bu şekilde, sunucu güzel sayfanıza işleyebileceği bir şekilde yanıt tamamlamayı başardı.

Örneğin, sunucu "" JSONP etkinleştirmek için yetenekleri. callback adında bir parametre bekler ki Daha sonra isteğiniz gibi görünecektir:

http://www.example.net/sample.aspx?callback=mycallback

JSONP olmadan, bu bazı temel JavaScript, nesne, gibi döndürebilir:

{ foo: 'bar' }

Ancak, JSONP, sunucu zaman "" parametresi, sonuç biraz farklı, böyle bir şey döndürüyor tamamladı: . geri alır

mycallback({ foo: 'bar' });

Gördüğünüz gibi, şimdi sen belirli bir yöntemi çağırmak olacaktır. Yani, sayfanızda, geri çağırma işlevi tanımlayın:

mycallback = function(data){
  alert(data.foo);
};

Ve şimdi, komut dosyası yüklendiğinde, değerlendirilmiş olacak, ve fonksiyon yürütülür. İşte, etki alanları arası istekleri!

JSONP ile bir büyük sorunu da belirtmekte fayda var: istek çok kontrolü kaybedersiniz. Örneğin, "doğru arıza kodları geri almak için." güzel yol yok Sonuç olarak, zamanlayıcılar isteği, her zaman biraz şüpheli olan, vb, izleme kullanarak sonunda. JSONRequest önerme etki alanları arası komut dosyası sağlayan, güvenliğin sağlanması ve isteği uygun denetim izin için harika bir çözüm.

Edit: Bu gün, CORS JSONRequest vs üzeri yaklaşımdır. JSONP hala eski tarayıcı desteği için yararlıdır, ama başka seçenek yoksa güvenlik üzerindeki etkileri dikkate alındığında, KÖŞELERİ daha iyi bir seçimdir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • tychoadragmire

    tychoadragmi

    20 Mart 2006