2014-06-06 13 views
8

JSONP isteğiyle bir API'dan bazı veriler almaya çalışıyorum, ancak her seferinde 404 elde ediyorum. URL’imin yanlış olduğunu varsayabilirim, ancak Chrome’da manuel olarak URL’ye basabilir ve istenen yanıtı alabilirim. Benim $http.jsonp her zaman hata geri aramada benim console.log içinde bir 404 gösteren hataları ile istek. JSONP isteği, Angular uygulamasında 404 verir

İşte istekte kod: Chrome Dev Araçlar

$scope.fetchDefaultLabel = function() { 
     // This code will eventually set the label to the site name when the endpoint field blurs. 
     // Currently not working properly. 
     if ($scope.endpoint) { 
     var baseUrl = $scope.endpoint.split('/')[2]; 
     var siteNameUrl = 'http://' + baseUrl + '/api/sitename.json?callback=JSON_CALLBACK'; 
     console.log(siteNameUrl); 
     $http.jsonp(siteNameUrl) 
      .success(function(data, status, headers, config) { 
      $scope.label = data; 
      }) 
      .error(function(data, status, headers, config) { 
      console.log('Data: ' + data); 
      console.log('Status: ' + status); 
      console.log('Headers: ' + headers); 
      console.log('Config: ' + config); 
      }); 
     } 
    }; 

Ağ paneli ı beklenebilir yanıt gövdesinde istek için 200 tepkisini gösterir, ama bu herhangi bir nedenle Açısal alma değil.

+1

bunu zaten gördünüz mü? http://stackoverflow.com/questions/19916362/angularjs-how-to-make-a-jsonp-request – klode

+0

Klode Bunu gördüm. API, JSONP isteklerini desteklemiyor olabilir. Mümkün mü? – raddevon

+0

Tam olarak aynı sorun var. – Miraage

cevap

5

Bazı arka uç geliştiricilerle konuştuktan sonra, kullandığım API JSONP'yi desteklemiyor gibi görünüyor. Bu istek üzerine 404 almamın sebebi buydu.

+2

Bu, bu tür bir hatayı işlemek için açısal olarak gerçekten korkunç bir yoldur. 404 vermek kafa karıştırıcıdır. ne diyorsun, "Hey, senaryoda çağırmak için geçerli bir işlev yok" ve hepimiz, jsonp – chrismarx

+0

için yanıtın geçerli olduğundan emin olmak için mutluyuz, ama sonra tarayıcıda nasıl çalışıyordu? – Azmeer

1

ajax isteğinizden hemen önce window.console.log (siteNameUrl) içeriğinin tam içeriğini sağlayabilir ve sonucu verebilir misiniz?
Belki de bir ayrıştırma problem sadece durumda) bir siteNameUrl.toString (deneyin
size tam aynı url talep etmiyoruz anlaşılıyor ...
bile zor siteNameUrl = olarak kullandığınız siteNameUrl yazılı koymayı deneyin "www.someapi/api"

+0

URL'yi herkese açık hale getirdiğimden emin değilim, ancak değişkeni bir değere zor kodlamayı denedim. Bu şekilde de işe yaramıyor. Bu noktada, API'nin JSONP isteklerini desteklemediğine inanıyorum. Mümkün mü? Bir API'ye bilerek JSONP desteği eklemeniz gerekiyor mu? – raddevon

+1

Evet, farklı bir uygulamaya ihtiyacınız olacak: [...] 'JSONP'ın çalışması için, bir sunucu JSONP ile biçimlendirilmiş sonuçların nasıl yanıtlanacağını bilmelidir' http://en.wikipedia.org/wiki/JSONP – SamiX