2013-06-03 7 views
0

У меня есть эта фабрика в угловом, и она возвращает мне код ошибки 0 всегда, даже если я вижу, что он извлекает из json origin, может кто-нибудь мне помочь?Угловая фабрика jsonp не работает

app.factory('docFactory', function($http) { 
    var docFactory = {  
    async: function(page) { 
     var url = 'http://example.com/ProviderRequest?&queryString=searchv2&callback=JSON_CALLBACK';  
     var promise = $http.jsonp(url).error(function (response, status) { 
      alert(status); 
     }).success(function (response, status) { 
      alert(status); 
     }).then(function (response, status) { 
      return response.data;   
     }); 
     return promise; 
    }}; 
    return docFactory; 
}); 
+0

Вы знаете, JSONP возвращает функцию права? –

+0

jsonp (url, config) Метод ярлыка для выполнения запроса JSONP. Параметры url - {string} - Относительный или абсолютный URL, определяющий назначение запроса. Должна содержать строку JSON_CALLBACK. config (необязательно) - {Object =} - Дополнительный объект конфигурации Возвращает {HttpPromise} - Объект будущего –

+1

В коде нет ничего плохого. URL-адрес просто ничего не возвращает. Попробуйте URL-адрес, который, как вы знаете, вернет jsonp. – rGil

ответ

2

Я столкнулся с этим сам. Если ваш JSONP является вызовом функции или чем-то фальшивым (null, false, undefined), вы столкнетесь с этим поведением. Посмотрите на код this от HTTP-сервера AngularJS для получения дополнительной информации (строки 41-54).

Если вы возвращаете функцию, вам может потребоваться вернуть true или что-то после вызова.

Редактировать: После просмотра вашего плункера кажется, что ваш ответ JSONP не вызывает метод обратного вызова. Ответ должен быть angular.callbacks._0({ ... });, где { ... } - ваш объект, а angular.callbacks._0 - значение параметра запроса callback в запросе.

+0

как я могу исправить этот плункер, тогда: http://plunker.co/edit/xQVBchTYOro1CB979021 –

-1

Ваш пример выше почти прав. Просто измените параметр

jsoncallback=JSON_CALLBACK 

callback Вы должны иметь что-то подобное, что в конце

$http.jsonp(url + '?jsoncallback=JSON_CALLBACK').success(function(data) { 
    console.log(data); 
}) 
Смежные вопросы