Jsonp Nedir Json İle Farkı Var Mıdır?

  1. Bad Code
    5
    2474
    13.11.2018 16:16:00

    Jsonp diye bir yapı görüyorum. Tam olarak nedir bu yapı . Nasıl bir ihtiyaca karşı geliştirilmiştir. Örnek ile anlatabiir misiniz ?

    json 2 yıl önce 1700 Görüntüleme

( 2 ) Cevap

  1. umut
    5
    1417
    27.01.2019 18:17:00

    JSONP aslında , XMLHttpRequest nin zorunlu kıldığı,sadece aynı domain çatısı altında çalışan sayfalara AJAX sorguları gönderebilirsin kuralını atlatmak için kullanılan , kandırmaca bir senaryodur , bir hiledir.

    AJAX çalışa mantığını hatırlayacak olursak ,

    ajax-nasil-calisir

    Aynı zamanda AJAX ın sayfa yenilemeden , bir web sayfasının bazı kısımlarını asenkron olarak güncelleyen , ve data transferi sırasında XML yada yine yaygın olarak kullanılan JSON text kullana bir teknoloji olduğunu da hatırlattıktan sonra , gelelim tekrar XMLHttpRequest in aynı alan adı zorunluluğu politikasına.

    Bu politikaya göre , farklı bir alan adına AJAX requesti gönderemeyiz. Ancak JSONP yöntemiyle ,Html deki script taglarıyla bu kısıtlamayı atlatabiliriz.

    Örneğin twitterdan twit beslemesi yapan ve jsonp yöntemiyle veri çeken bir uygulama ;

    <html>
        <head>
         <title>JSONP kullanım örneği , code.replyfeed.com</title>
            <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
            <script>
                $(document).ready(function(){
                    $.ajax({
                        url: 'http://twitter.com/status/user_timeline/padraicb.json?count=10',
                        dataType: 'jsonp',
                        success: function(JsonpData){
                            var entryler = '';
                            var len = JsonpData.length;
                            for(var i=0;i<len;i++){
                                twitterEntry = JsonpData[i];
                                entryler += '<p>'+twitterEntry['text'] + '</p>'
                            }
                            $('#twitler').html(entryler);
                        },error: function (xhr, ajaxOptions, thrownError) {
                            alert(xhr.status);
                            alert(thrownError);
                        }
                    });
                })
            </script>
        </head>
        <body>
            <div id = 'twitler'>Birazdan burası twtlerle dolacak...</div>
        </body>
    </html>
    
  2. mfatih
    4
    4713
    27.01.2019 18:37:00

    JSONP'nin açılımı JSON With Padding dir. Siteler arası AJAX soguları için kullanılır.

    //JSON
    {"name":"code.replyfeed","id":2}
    //JSONP
    func({"name":"code.replyfeed","id":2});
    

    Bu sayede JSON , bir script dosyası gibi yüklenir.

    Örneğin abc.com da bulunan bir sayfanızdan , xyz.com da bulunan bir sayfaya AJAX request atacaksınız , normalde buna izin verilmez , ancak bu yöntemle bu yapılabilir.

    function testfunc(json){
      alert(json.name);
    }
    var element= document.createElement("script");
    element.setAttribute("type", "text/javascript");
    element.src = "http://xyz.com/jsonp";
    

Cevabınız