Не удается заставить работать метод jQuery ajax

У меня есть 2 html-файла с именами host.html и test.html, которые я так старался, но не могу загрузить файл test.html как содержимое mydiv в host.html, которое я пробовал:

$("#myDiv").load("test.html");

но это терпит неудачу; Затем я попытался использовать следующий метод ajax, чтобы получить файл:

$.ajax({
  type: "GET",
  url: "test.html",
  error: function (xhr, statusText) { alert("Error: " + statusText); },
  success: function (msg) { alert("Success: " + msg); }
});

Но, к сожалению, я всегда бью ошибку! И host.html, и test.html включены в одни и те же папки! Что я делаю неправильно?! Пожалуйста помоги

Ура!

1 ответ

Решение

Цитирую это: Происхождение null не разрешено Access-Control-Allow-Origin

Origin null - это локальная файловая система, поэтому она предполагает, что вы загружаете HTML-страницу, которая выполняет вызов загрузки, через URL-адрес file:/// (например, просто дважды щелкаете по нему в локальном файловом браузере или аналогичном). Различные браузеры используют разные подходы к применению одной и той же политики происхождения к локальным файлам.

Я предполагаю, что вы видите это с помощью Chrome. Правила Chrome для применения SOP к локальным файлам очень жесткие, он запрещает даже загрузку файлов из того же каталога, что и документ. Так же как и Опера. Некоторые другие браузеры, такие как Firefox, разрешают ограниченный доступ к локальным файлам. Но в основном использование ajax с локальными ресурсами не будет работать кросс-браузерно.

Если вы просто тестируете что-то локальное, что вы действительно будете развертывать в Интернете, а не используете локальные файлы, установите простой веб-сервер и вместо этого протестируйте через http:// URL. Это дает вам гораздо более точную картину безопасности.

Другие вопросы по тегам