Файл индекса CORS post с вызовом XML

#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"