Мне нужно загрузить файл JSON с другого сервера (где у меня нет контроля). Через несколько часов исследования обнаружили, что JSONP - это грязный хак, который отвечает моим мольбам.Потребление jsonp с angularjs, (не может CORS)
Я использую nodejs, обслуживая сайт на localhost: 3000, используя gulp. Загрузка JSON с локального хоста: 8000
Мне удалось получить пример работы с URL-адреса, который мне не нужен (случайно найден в Интернете), используя тот же код, что и у меня с моим URL-адресом.
Это заставляет меня задаться вопросом, пытаюсь ли я читать файл, как будто это не так? Насколько я могу исследовать, не нужно разбирать JSON в JSONP. Я на правильном пути?
Underneath, код, который я говорил:
(function() {
'use strict';
angular
.module('qwe.asd')
.controller('UsersController', UsersController);
/** @ngInject */
function UsersController($http, $log, $sce) {
var vm = this;
var trustedUsersAPI = "http://localhost:8000/users?callback=JSON_CALLBACK";
$sce.trustAsResourceUrl(trustedUsersAPI);
$http.jsonp(trustedUsersAPI, {
'callback': 'JSON_CALLBACK'
})
.success(function (data) {
$log.log("request 1 - OK");
$log.log(data);
vm.users = data;
})
.error(function() {
$log.log("request 1 - KO");
});
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";
$sce.trustAsResourceUrl(url);
$http.jsonp(url)
.success(function (data) {
$log.log("request 2 - OK");
$log.log(data);
})
.error(function() {
$log.log("request 2 - KO");
});
}
})();
И журналы, созданные ...
angular.js:13424 request 1 - KO
angular.js:13424 request 2 - OK
angular.js:13424 Object {found: 12, posts: Array[12]}
И, наконец, JSON файлы я (MIS) чтение:
Тот, который мне нужен, но у меня не может быть
[{"id":0,"firstname":"front","lastname":"end","email":"[email protected]"},{"id":1,"firstname":"back","lastname":"end","email":"[email protected]"},{"id":2,"firstname":"john","lastname":"doe","email":"[email protected]"},{"id":3,"firstname":"dev","lastname":"eloper","email":"[email protected]"},{"id":4,"firstname":"ad","lastname":"min","email":"[email protected]"}]
И один мне не нужен, но работает отлично
{"found":12,"posts":[{"ID":XX,"site_ID":XXXX,"author":XXXX(..POSTS DATA WITH NO VALUE HERE..)}]}
P.S. Я действительно зеленый здесь, я нахожусь угловатым с сегодняшнего утра!
так ... что работает и не работает? –
* «После нескольких часов исследования выяснилось, что JSONP - это грязный хак, который отвечает моим мошенникам». * Только если этот сервер поддерживает JSONP. ** Отправлено сервером для JSON против JSONP ** ** **. Пример JSON: '{" foo ":" bar "}' Пример JSONP: 'callback ({" foo ":" bar "})' –
JSON, содержащийся в trustedUsersAPI, доступен через вкладку сети (в devtools от Chrome), но как-то недоступен через код. @KevinB –