SORU
1 EKİM 2010, Cuma


Kimse, meslekten olmayan açısından JSONP nedir açıklayabilir misiniz?

JSONP dolgu ile JSON olduğunu biliyorum.

JSON nedir ve jQuery.getJSON() ile kullanmayı anlıyorum. Ancak, JSONP tanıtırken callback kavramı anlamıyorum.

Herkes bunun nasıl çalıştığını bana açıklayabilir mi?

CEVAP
1 EKİM 2010, Cuma


JSONP ("JSON ile Doldurma") yöntemi yaygın olarak kullanılan atlama çapraz etki alanı ilkeleri web tarayıcıları (İzin Verilmiyor olun AJAX istekleri için bir web sayfası algılanan olmak farklı bir sunucu ile tarayıcı).

JSON ve JSONP farklı istemci hem de sunucu üzerinde çalışır. JSONP istekleri <script> etiketi hedef URL olarak ayarlanır oluşturulur yerine XMLHTTPRequest (ve ilişkili tarayıcı yöntemleri) kullanılarak gönderilir. Bu script etiketinden sonra DOM (normalde <head>) eklenir.

İsteğin JSON:

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function () {
  if (xhr.readyState == 4 && xhr.status == 200) {
    // success
  };
};

xhr.open("GET", "somewhere.php", true);
xhr.send();

İstek JSONP:

var tag = document.createElement("script");
tag.src = 'somewhere_else.php?callback=foo';

document.getElementsByTagName("head")[0].appendChild(tag);

JSON yanıt arasındaki fark JSONP bir yanıt, JSONP yanıt nesnesi, bir geri arama işlevi için bağımsız değişken olarak geçirilen böyle formüle edilmiş olmasıdır.

JSON:

{
    "bar": "baz"
}

JSONP:

foo({
    "bar": "baz"
});

Bu JSONP isteği "" parametresi, sunucu yanıtı etrafında sarmak için fonksiyonun adını bilir. geri içeren nedeni budur

Bu fonksiyonu <script> etiket tarayıcı isteği tamamlandıktan sonra () tarafından değerlendirilir zamanda global etki alanında bulunması gerekir.


Başka bir fark durumundan haberdar olmak arasında taşıma bir yanıt JSON ve JSONP yanıt, herhangi bir ayrıştırma hataları bir JSON yanıt durum yakalandı (kaydırma tarafından girişim değerlendirir responseText bir try/catch ifadesi). JSONP bir yanıt doğası gereği ancak yanıt ayrıştırma hataları yakalanamayan JS Ayrıştırma hatası verecektir. Her iki biçimleri ancak, zaman aşımı hataları (istek başlamadan önce bir zaman aşımı ayarı ve yanıt handler. timeout temizleme uygulayabilirsiniz


Bir WordPress kullanmak JSONP isteği yapmak için yararlılığı, DV arka planda sizin için iş alllllllll yapmasıdır.

sen AJAX isteğinizi URL &callback=? içermesi gerekir (varsayılan), DV. bir WordPress kullanmak belirttiğiniz, benzersiz bir ad atayın ve genel kapsamda yayınla success işlevi alacak. O zaman sadece fonksiyon atandığı adı ile &callback=? 19 *yerini alacak.


Benzer JSON, JSONP Uygulamaları (varsayarak yanıt nesnesi {"bar":"baz"}: ./

JSON

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function () {
  if (xhr.readyState == 4 && xhr.status == 200) {
    document.getElementById("output").innerHTML = eval('('   this.responseText   ')').bar;
  };
};

xhr.open("GET", "somewhere.php", true);
xhr.send();

JSONP:

function foo(response) {
  document.getElementById("output").innerHTML = response.bar;
};

var tag = document.createElement("script");
tag.src = 'somewhere_else.php?callback=foo';

document.getElementsByTagName("head")[0].appendChild(tag);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly Awesome

    Elly Awesome

    15 ŞUBAT 2010
  • KittiesMama

    KittiesMama

    10 AĞUSTOS 2008
  • xCraash

    xCraash

    6 Temmuz 2012