#javascript #angularjs #json #xmlhttprequest #local
#javascript #angularjs #json #xmlhttprequest #Местные новости
Вопрос:
Я хочу создать простой локальный веб-сайт для визуализации моих данных json, которые генерируются из моих тестов транспортира. Проблема в том, что angular не поддерживает загрузку локальных файлов, поэтому вы знаете, есть ли какой-либо способ, которым я могу использовать этот JSON локально? Я не хочу настраивать сервер только для загрузки одного небольшого файла в одну переменную.
Я пытался $http
, но это, очевидно, приводит к сбою XMLHttpRequest Cross origin request
. Я ценю любое предложение.
РЕДАКТИРОВАТЬ: я решил запустить http-сервер из npm. Я запускаю его на порту 8080 и указываю путь к моему проекту. Тогда у меня есть
var app = angular.module("reportingApp", ['nvd3']);
app.controller('MainController', ['$scope', '$rootScope', '$http', function($scope, $rootScope, $http) {
$scope.title = 'abc';
$http.get('http://127.0.0.1:8080/e2e-Report/combined.json').success(function(data) {
$scope.title = data.jsonData;
});
}]);
по-моему, app.js
чтобы получить файл через http
, но он выдает No 'Access-Control-Allow-Origin' header is present on the requested resource
Комментарии:
1. Angular поддерживает загрузку локального JSON
2. Вы не можете этого сделать
3. это не ограничение angular, это ограничение вашего браузера и функция безопасности. вы бы не хотели, чтобы какой-либо веб-сайт с javascript мог получить доступ к вашему жесткому диску.
4. Итак, нет ли возможного способа чтения локальных файлов?
5. вы можете запустить свой проект на localhost, он будет извлекать локальные данные json…
Ответ №1:
Вы можете создать локальный сервер, установив
npm install http-server -g
Как только он будет установлен, перейдите в командную строку -> Путь к вашему проекту -> http-сервер amp;
Пример.
D:angularProject> http-server amp; (Press Enter)
Это запустит localhost server: localhost://8080
.
Откройте localhost://8080 в вашем браузере.
Теперь вашей проблемы с CORS не будет. Наслаждайтесь.
РЕДАКТИРОВАТЬ: Вы должны node
быть установлены на вашем компьютере.
Пример кода:
$http.get("api/my.json").then(function (res){
console.log("res",res);
})
Комментарии:
1. Я сделал это, но после того, как я использую $ http.get (‘ 127.0.0.1:8080/e2e-Report/combined.json’ ), он выдает, что заголовок ‘Access-Control-Allow-Origin’ не присутствует в запрошенном ресурсе
2. Можете ли вы сказать мне, используете ли вы локальный JSON или 127.0.0.1: 8080 / e2e-Report /combined.json’ указывает на какую-то другую машину.
3. Я запускаю http-сервер (тот, что указан в вашем ответе) с путем к моему локальному проекту на моем локальном компьютере в качестве дополнительного параметра.
4. @FCin ваш код должен работать. Можете ли вы попробовать: $http.get(‘e2e-Report/combined.json’).success(функция(данные) { $scope.title = data.jsonData; });
5. он выдает «Перекрестные исходные запросы поддерживаются только для схем протоколов», поэтому он не использует сервер.
Ответ №2:
простой способ используйте некоторые редакторы, такие как скобки, для такого рода работ, с Live view вы получите то, что хотите.