AngularJS ile JSONP talebi göndermek

16 Tem

Angularjs ile Cross-Domain sorununu aşmak için JSONP yöntemini kullanabiliriz. En basit haliyle bir JSONP talebi şu şekilde gönderilebilir.

 $http.jsonp('http://www.filltext.com/?callback=JSON_CALLBACK&rows=5&fname={firstName}&lname={lastName}')
   .success(function (data) {
        console.log(data);
    }
 );

Diğer bir yöntem ise parametreleri ayırarak talebi göndermektir.

  $http({
        url: 'http://www.filltext.com',
        method: 'JSONP',
        params: {
                 callback: 'JSON_CALLBACK',
                 rows: 5,
                 fname: '{firstName}',
                 lname: '{lastName}'
        }
 }).
 success(function (data) {
      console.log(data);
 }).error(function (data) {
     console.log(data);
 })

Angularjs ile çalışırken callback fonksiyonlarının ismi JSON_CALLBACK şeklinde olmalıdır. Aksi taktirde hata ile karşılaşırız. Angularjs kendi içinde callback fonksiyonunun adını değiştirir. Sonuçta talep olarak bize aşağıdaki gibi bir cevap dönecektir.

    angular.callbacks._0({"key": "data"});

İşlem başarılı bir şekilde gerçekleşirse success fonksiyonu çalışacaktır. Hata oluşursa error fonksiyonu çalışacaktır.