Невозможно получить доступ к объекту json в Chrome с помощью javascript (jquery) [duplicate]

Еще один подход к возврату значения из асинхронной функции - передать объект, который сохранит результат от асинхронной функции.

Вот пример того же:

var async = require("async");

// This wires up result back to the caller
var result = {};
var asyncTasks = [];
asyncTasks.push(function(_callback){
    // some asynchronous operation
    $.ajax({
        url: '...',
        success: function(response) {
            result.response = response;
            _callback();
        }
    });
});

async.parallel(asyncTasks, function(){
    // result is available after performing asynchronous operation
    console.log(result)
    console.log('Done');
});

Я использую объект result для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.

Я использую этот подход много. Мне было бы интересно узнать, насколько хорошо этот подход работает, когда задействован результат обратно через последовательные модули.

628
задан corazza 2 December 2014 в 13:33
поделиться

19 ответов

Мой хрустальный шар говорит, что вы загружаете модель, используя либо file://, либо C:/, которые остаются верными сообщению об ошибке, поскольку они не http://

. Таким образом, вы можете установить веб-сервер на локальном компьютере или загрузите модель в другое место и используйте jsonp и измените URL-адрес на http://example.com/path/to/model

658
ответ дан Andreas Wong 28 August 2018 в 19:52
поделиться

Для всех y'all на MacOS ... установите простой LaunchAgent , чтобы включить эти гламурные возможности в вашей собственной копии Chrome ...

Сохраните plist, названный любым (например, launch.chrome.dev.mode.plist) в ~/Library/LaunchAgents с похожим контентом, чтобы ...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>launch.chrome.dev.mode</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Google Chrome.app/Contents/MacOS/Google Chrome</string>
        <string>-allow-file-access-from-files</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

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

launchctl load -w ~/Library/LaunchAgents/launch.chrome.dev.mode.plist

TADA!

0
ответ дан Alex Gray 28 August 2018 в 19:52
поделиться

Я собираюсь перечислить 3 разных подхода к решению этой проблемы:

  1. Использование очень легкого пакета npm: установите live-server , используя npm install -g live-server. Затем перейдите в этот каталог, откройте терминал и введите live-server и нажмите enter, страница будет отправлена ​​на localhost:8080. БОНУС: он также поддерживает горячую перезагрузку по умолчанию.
  2. Используя небольшое приложение Google Chrome , разработанное Google: затем установите приложение, перейдите на вкладку приложений в Chrome и откройте приложение. , В приложении укажите его в нужную папку. Ваша страница будет подана!
  3. Изменение ярлыка Chrome в окнах: создание ярлыка браузера Chrome. Щелкните правой кнопкой мыши значок и откройте свойства. В свойствах отредактируйте target до "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession" и сохраните. Затем с помощью Chrome откройте страницу с помощью ctrl+o. ПРИМЕЧАНИЕ. НЕ используйте этот ярлык для регулярного просмотра.
6
ответ дан BlackBeard 28 August 2018 в 19:52
поделиться

Для тех, кто в Windows без Python или Node.js, есть еще легкое решение: Mongoose .

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

Кроме того, Z-WAMP - это 100% портативный WAMP, который запускается в одном папка, это потрясающе. Это вариант, если вам нужен быстрый сервер PHP и MySQL.

10
ответ дан bryc 28 August 2018 в 19:52
поделиться
11
ответ дан CommonsWare 28 August 2018 в 19:52
поделиться

Я получал эту точную ошибку при загрузке HTML-файла в браузере, который использовал json-файл из локального каталога. В моем случае я смог решить это, создав простой сервер узлов, который позволил статическому контенту сервера. Я оставил код для этого в этом другом ответе .

141
ответ дан Community 28 August 2018 в 19:52
поделиться

Подходим к этому сегодня.

Я написал код, который выглядит так:

app.controller('ctrlr', function($scope, $http){
    $http.get('localhost:3000').success(function(data) {
        $scope.stuff = data;
    });
});

... но он должен был выглядеть так:

app.controller('ctrlr', function($scope, $http){
    $http.get('http://localhost:3000').success(function(data) {
        $scope.stuff = data;
    });
});

Единственное различие заключалось в отсутствии http:// во втором фрагменте кода.

Просто хотелось поместить это там, если есть другие, имеющие аналогичную проблему.

51
ответ дан corazza 28 August 2018 в 19:52
поделиться

Я предлагаю вам использовать мини-сервер для запуска таких приложений на локальном хосте (если вы не используете какой-либо встроенный сервер).

Вот что очень просто настроить и запустить:

https://www.npmjs.com/package/tiny-server
2
ответ дан Deniss M. 28 August 2018 в 19:52
поделиться

Он просто говорит, что приложение должно запускаться на веб-сервере. У меня была такая же проблема с хром, я начал tomcat и перенесла туда свое приложение, и оно сработало.

1
ответ дан Enayat Rajabi 28 August 2018 в 19:52
поделиться
  • Установите локальный веб-сервер для java, например Tomcat, для php вы можете использовать лампу и т. д.
  • Отбросить json-файл в общедоступном каталоге сервера приложений
  • Запустите сервер приложений, и вы сможете получить доступ к файлу из localhost
0
ответ дан Fred Ondieki 28 August 2018 в 19:52
поделиться

Я также смог воссоздать это сообщение об ошибке при использовании тега привязки со следующим href:

<a href="javascript:">Example a tag</a>

В моем случае для получения «курсора указателя» использовался тег «a», и событие фактически контролировалось некоторым событием jQuery при щелчке. Я удалил href и добавил класс, который применяется:

cursor:pointer;

0
ответ дан mgilberties 28 August 2018 в 19:52
поделиться

Один из способов загрузки локальных файлов - использовать их в папке проекта вместо внешней папки проекта. Создайте одну папку в файлах вашего проекта, аналогичную тому, как мы создаем для изображений, и заменим раздел, где используется полный локальный путь, отличный от пути к проекту, и используйте относительный URL-файл файла в папке проекта. Это сработало для меня

0
ответ дан Naga Sai A 28 August 2018 в 19:52
поделиться

Многие проблемы для этого, с моей проблемой отсутствует «/»: jquery-1.10.2.js: 8720 XMLHttpRequest не может загрузить http: // localhost: xxxProduct / getList_tagLabels / Это должно быть : http: // localhost: xxx / Product / getList_tagLabels /

Надеюсь, эта помощь поможет вам решить эту проблему.

-1
ответ дан Ngô Đức Tuấn 28 August 2018 в 19:52
поделиться
490
ответ дан Scott Stensland 28 August 2018 в 19:52
поделиться

Невозможно загрузить статические локальные файлы (например: svg) без сервера. Если у вас установлен NPM / YARN на вашем компьютере, вы можете настроить простой http-сервер, используя « http-server »

npm install http-server -g
http-server [path] [options]

Или открыть терминал в этой папке проекта и введите «hs». Он автоматически начнет сервер HTTP live.

0
ответ дан sujithklr93 28 August 2018 в 19:52
поделиться

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

  1. Перейти к: https://nodejs.org/en/download/. Установите nodejs.
  2. Установите http-сервер, запустив команду из командной строки npm install -g http-server.
  3. Перейдите в рабочий каталог, где index.html / yoursome.html находится.
  4. Запустите свой http-сервер, выполнив команду http-server -c-1

Откройте веб-браузер до http://localhost:8080 или http://localhost:8080/yoursome.html - в зависимости от вашего имени файла html.

0
ответ дан TarmoPikaro 28 August 2018 в 19:52
поделиться

Просто измените url на http://localhost вместо localhost. Если вы откроете файл html из локального, вы должны создать локальный сервер для работы с этим html-файлом, самый простой способ - Web Server for Chrome . Это устранит проблему.

25
ответ дан vaxquis 28 August 2018 в 19:52
поделиться
6
ответ дан Yash P Shah 28 August 2018 в 19:52
поделиться

эр. Я только что нашел некоторые официальные слова: «Попытка загрузить незастроенные удаленные модули AMD, использующие додзе / текстовый плагин, не будет выполнена из-за ограничений безопасности для кросс-оригинала. (Встроенные версии модулей AMD не подвержены влиянию, поскольку вызовы dojo / text устраняются система сборки.) " https://dojotoolkit.org/documentation/tutorials/1.10/cdn/

0
ответ дан YUIOP QWERT 28 August 2018 в 19:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: