Неработающий относительный URL в jQuery AJAX-методе getJSON - PullRequest
2 голосов
/ 31 августа 2011

URL для моей среды разработки:

http://localhost/mysite/blah...

Я использую jQuery & getJSON для выполнения некоторых действий ajax на моем сайте, которые работают нормально все время, когда я указываю URL как:

/mysite/controller/action

.. но это не идеально, так как я не хочу жестко закодировать свой URL-адрес разработки в мои отдельные включаемые файлы jQuery.

Когда сайт заработает, будет нормально иметь контроллер / действие или / контроллер / действие в качестве URL-адреса, поскольку это разрешит нормально, но для сайта разработки это не так.

Я пробовал:

controller/action

.. но это возвращает 404, что удивило меня, так как я думал, что отсутствие / в начале URL-адреса помешает взглянуть на корень сайта.

Там должно быть аккуратное решение для этого?

Ответы [ 3 ]

4 голосов
/ 31 августа 2011

Я бы сделал это, вставив глобальную константу в мой HTML-заголовок:

<script type="text/javascript">
  var BASE_URL = '/mysite/';
</script>

Это будет вставлено с вашего сервера, чтобы его можно было динамически изменять.Позже в вашем скрипте вы сможете делать запросы AJAX с помощью (стиль jQuery здесь):

$.ajax( BASE_URL + '/controller/action', ...);
1 голос
/ 31 августа 2011

Если вы находитесь в

/mysite/controller/action

, то правильный относительный путь к

/mysite/some_other_controller/some_other_action 

равен

../../some_other_controller/some_other/action
0 голосов
/ 14 июня 2017

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

var url;
$("script").each(function () {
       if ($(this).attr("src").indexOf("[YOUR_SCRIPT_NAME.JS]") > 0) {
                url = $(this).attr("src");
                url = url.substr(0, url.lastIndexOf("/"));
                return false;
       }
});
var final_url = url + "/your_target_script.js"

Замените YOUR_SCRIPT_NAME уникальным именем вашего скрипта.

...