2014-10-27 3 views
0

Я не совсем уверен, что происходит, поскольку я все еще пытаюсь изобразить межсайтовые javascript-вызовы, но я вызываю некоторые JSON с сайта WordPress (это использует WordPress JSON REST API). Поскольку это происходит с локального сайта (я работаю над мобильным приложением с использованием Ionic/Angular), у меня были проблемы с междоменным доступом. Итак, я смотрю на использование JSONP.Угловой JSONP, вызывающий WordPress JSON REST API

Я успешно вызвал и вернул информацию, но я не могу ничего сделать с возвращенными данными.

Мой вызов, как так:

$http.jsonp('http://heavymetalhamilton.ca/wp-json/hmh-api/shows?_jsonp&callback=JSON_CALLBACK') 
    .success(function(data) { 
    console.log(data); 
    }); 

Однако, ничего не собирается. Я могу видеть, что $ http.jsonp вызов возвращает данные (я могу видеть, инструменты разработчика и выглядит следующим образом:

/**/([{"ID":30,"post_date":"2014-09-25 18:33:15","post_date_gmt":"2014-09-25 
... 
) 

Я вижу, что возвращение данных имеет некоторую упаковку вокруг него, но я не уверен, как обрабатывать эти данные

Любая помощь

EDIT:.?. Есть то, что происходит происходит через CodePen

+0

Если ничего не регистрируется, запрос должен быть сбой. Попробуйте '$ http.jsonp ('...'). Error (function, data, status, headers, config) {... ...})' –

+0

Это действительно ошибка ... и показывает статус 404. Очень странно, поскольку dev инструменты показывают, что запрос возвратил статус 200, а также данные. – MetalAdam

+0

Есть ли что-нибудь еще? Например, сообщение об ошибке или исключение? Коды состояния ненадежны при использовании запросов JSONP. –

ответ

0

Так, самая большая проблема у меня (там было пара), был мой звонок jsonp. Не существует обещания «успеха». JSONP запускает функцию, определенную в качестве обратного вызова - в этом случае, вызов:

http://heavymetalhamilton.ca/wp-json/hmh-api/shows?_jsonp=mytest&callback=JSON_CALLBACK

вызывает глобальную функцию MyTest() один раз возвратил. Итак, для того, чтобы получить глобальную функцию в мой контроллер, так что я могу использовать $ объем, мой конечный результат:

$http.jsonp('http://heavymetalhamilton.ca/wp-json/hmh-api/shows?_jsonp=mytest&callback=JSON_CALLBACK'); 

window.mytest = function(data) { 
    $scope.shows = data; 
}; 

Я также имел проблемы с типом контента я возвращался (как уже упоминалось @Miszy). Я должен указать, что Content-Type установлен в application/javascript ... ранее он возвращал application/json.

В моем случае, я пишу некоторые пользовательские функции для возврата конкретного содержания, поэтому я добавил следующее:

if ($_GET['_jsonp']) { 
    $response->header('Content-Type', 'application/javascript; charset=' . get_option('blog_charset'), true); 
} 

Надеется, что это помогает кто-то вниз по дороге!

-1

возвращений данных как объект JSON Пожалуйста, попробуйте войти, используя следующий формат

JSON.stringify(data); 

Или же вы можете пройти через возвращаемые данные устанавливаются следующим образом

console.log(data.ID + ', ' + data.post_date); 

и так далее ...

+0

Как именно помочь JSON.stringify? 'console.log' в порядке с строкой или объектом - проблема в том, что он никогда не вызван. –

+0

Успех не называется, что является проблемой. – MetalAdam

Смежные вопросы