#javascript #ajax #xml #url #cors
#javascript #ajax #xml #url #cors
Вопрос:
У меня есть некоторый Ajax, который выполняет вызов ресурса из разных источников
$("#inductive1").click(function (event) {
$.post(
"https://www.mysite.co.uk/folder/tests/Inductive/Test1/index.phtml",
function (data) {
$('.stage2').html(data);
}
);
});
в index.phtml
файле у меня есть некоторый скрипт, который вызывает exam.xml
Скрипт внутри index.phtml
( function($, undefined) {
$(function() {
var test = new Test({
testName: "Inductive Test 1",
dataURL : "/getresultshtml.php",
sendEmailURL: "/sendresultsbyemail.php",
contentFolder : "./",
solutionURL: "../../../content/f/id/10/",
userID: 0,
courseItemID: 25,
XMLFile: "exam.xml",
isStandalone: false
});
test.start();
});
}(jQuery));
Однако XML-файл пытается быть вызван с другого сервера,
НАПРИМЕР
https://server1.com/exam.xml
это должно быть
https://myserver.com/exam.xml
Я попытался изменить JS на прямой путь, как в
XMLFile: "htttps:/myserver.com/exam.xml"
но он читается как
https://server1.com/myserver.com/exam.xml
как мне изменить javascript, чтобы он изменял корневой URL на myserver.com
, а не server1.com
Ответ №1:
Похоже, что какой-то используемый вами плагин изменяет базовый URL документа, вы можете попробовать поместить это в начало index.phtml
<base href="https://myserver.com">
Если это не сработает, вам может потребоваться динамически изменять базовое свойство с помощью JavaScript непосредственно перед вызовом ajax
document.write("<base href='http://myserver.com/'>");
Комментарии:
1. Вау, это выглядит хорошо. мне нравятся исправления в 1 строке, только что получил новую ошибку, которую я исправляю, тогда, если работает, я приму ответ.
2. Я не был уверен, как
Test
может измениться корневой путь, но рад, что это сработало ! 🙂
Ответ №2:
Я не уверен, как Test
будет использоваться XMLFile
. Но, согласно документации jquery.ajax, передачи полного URL (с протоколом) в url
параметре должно быть достаточно.
Может быть, test.start()
выполняет какие-то манипуляции?
Единственная другая возможная проблема, которую я обнаружил, заключается в том, что вы объявляете свой протокол с дополнительным t
и отсутствующим /
XMLFile: "htttps:/myserver.com/exam.xml"
Попробуйте использовать
XMLFile: "https://myserver.com/exam.xml"