JQuery Post Call中的相对URL

前端之家收集整理的这篇文章主要介绍了JQuery Post Call中的相对URL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下情况。

我开发了我的第一个MVC Asp.Net应用程序。它在我的服务器上运行在下面的地址

http://localhost:59441/

我写了一些看起来像这样的JQuery Post Methods

$.ajax({
        type: "POST",url: "/CeduleGlobale/UpdateCheckBox",...

CeduleGlobale是我的ControllerName

UpdateCheckBox是我的methodName

当我将该应用程序放在testServer上时,它被放在一个VirtualDirectory中

因此现在的应用程序

http://testServer/JprApplication/

没有更多的端口要指定,还有一个应用程序名称

当我开始测试时,我很快注意到我的JQuery Post电话没有工作了…

修改了他们现在的URL是

/JprMvc/CeduleGlobale/UpdateCheckBox

问题是2倍。

>这使得我很难在我的开发机器上进行测试,因为IIS Express不允许我指定一个虚拟目录。
>我不喜欢在JQuery中硬编码虚拟目录名称,因为我不知道应用程序在生产环境中将有什么名字,因此我必须修改我的脚本,然后才能在生产环境中安装应用程序。

我确信我缺少一些基本的东西来简化这个。

谢谢

解决方法

根据您实际拥有JavaScript的位置(在View或单独的JS文件中),您有几个选项。

选项1 – 视图内

只需使用Html助手为您生成链接

<script type="text/javascript">
   $(function(){
        $.ajax({
           type: "POST",url: "@Url.Action("UpdateCheckBox","CeduleGlobale")"
        });
   });
</script>

选项2 – 独立的JS文件

我们通常每页都有一个功能来设置该页面的处理程序。所以我们可以做一些类似如下的工作:

视图

<script type="text/javascript">
    $(function(){
        SetOrderPage('@Url.Action("UpdateCheckBox","CeduleGlobale")');
    });
</script>

独立的JS文件

function SetOrderPage(ajaxPostUrl){
       $.ajax({
           type: "POST",url: ajaxPostUrl
       )};
}

选项3 – 独立JS文件方法2

你可以在你的JS文件中有一个全局变量,这是一个siteroot。这里的回顾是,您需要手动创建每个操作方法路径。在每个页面上,您可以设置站点全局变量

独立的JS文件

var siteRoot;

视图

<script type="text/javascript">
    siteRoot = '@Request.ApplicationPath';
</script>

请记住,您不能在独立的JS文件中使用Razor语法。我相信,最好让Razor / MVC / .NET动态地为您提供站点路径或URL路由,因为它将真正减少在站点/虚拟目录之间移动时可能会发生的错误

猜你在找的jQuery相关文章