JQuery Ajax Url пути разрыва при доступе на разных уровнях каталогов - PullRequest
2 голосов
/ 15 октября 2010

Пришло время для еще одного очень простого вопроса, для которого я не могу найти элегантного решения. В основном у меня есть приложение, использующее вызов jQuery Ajax. В этом вызове вы должны указать URL-адрес для службы, которую вы вызываете. В этом случае мне нужно вызвать эту функцию JavaScript из нескольких файлов в моем приложении, и эти файлы находятся на разных уровнях структуры папок.

Вот вопрос, как бы вы элегантно справились с этим сценарием, чтобы вы могли вызывать функцию JS из любого места в вашем приложении. Вот мои ограничения:

1) Я работаю на Asp.Net 4.0. 2) В моей текущей среде есть локальная среда, среда разработки, тестирования и разработки (жесткое кодирование пути URL не будет работать).

Фрагменты кода:

    function MakeTheCall() {

  $.ajax({
   type: "POST",
   url: "Services/FileName.asmx/Handler", //Path in Question
   data: "",
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function(result) {
   },
   error: function(xmlHttpRequest, status, err) {
   }

  });
}

Я хотел бы иметь возможность вызывать эту функцию (которая находится во внешнем файле JavaScript) из файлов на разных уровнях каталогов, например:

1) http://SomeDomain.com/SomeDir/CallingFile.aspx 2) http://SomeDomain.com/CallingFile.aspx

Есть предложения? Я могу придумать пару различных сценариев для этого, но большинство вращается вокруг создания переменной JavaScript и установки ее значения в C #. Надеюсь, есть лучший способ?

Спасибо!

1 Ответ

3 голосов
/ 15 октября 2010

Вы пробовали url: "/Services/FileName.asmx/Handler"?

Редактировать: Применимость вышеизложенного зависит от того, всегда ли каталог «Службы» находится на одном уровне относительно доменного имени илине.Если вы развернете все приложение с другим уровнем пути, вам нужно будет использовать

// in code-behind file
string rootURL = HttpContext.Current.Request.Url.GetLeftPart(System.UriPartial.Authority) + 
    "/" + HttpContext.Current.Request.ApplicationPath + "/";

// in .aspx
url: <%Response.Write(rootURL)%> + "Services/FileName.asmx/Handler"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...