正确设置Ajax相对URL

时间:2014-07-10 12:41:49

标签: javascript jquery ajax asp.net-mvc

我将MVC应用程序划分为多个区域,当我尝试从Engineer区域进行AJAX调用时,相对URL会转换为与我的意图不符的URL;

以下是示例:

这是Ajax调用的URL:

$.ajax({
    cache: false,
    type: 'GET',
    url: 'api/JobData/GetSitesByClientId',
    data: {
        'clientId': selectedClient
    }
})

这是生成的网址:

http://localhost:53433/Engineer/Jobs/api/JobData/GetSitesByClientId?clientId=09659dc4-faa7-4edb-af27-ecb7416a82fb

这是我想要生成的网址:

http://localhost:53433/api/JobData/GetSitesByClientId?clientId=09659dc4-faa7-4edb-af27-ecb7416a82fb

我怎样才能做到这一点?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您可以在URL的开头添加前导斜杠/。但是,我不建议使用此方法,因为如果您的应用程序部署在子目录中(例如:www.host.com/myapp/),那么路径将是错误的

在这种情况下我做的是在我的视图的javascript上下文中定义一个全局的rootPath变量

<强>布局

  <script>
    var rootPath = '@URL.Content("~")';
  </script>

然后在Javascript文件中,我将rootPath附加到我想要使用的任何路径

$.ajax({
    url: rootPath + 'mycontroller/mymethod',
    method: 'GET',
    success:function(){
      alert("success");
    }  

});