javascript - 在开发和生产环境中获取基本 url

标签 javascript jquery

我正在使用 MVC3 并使用 jquery 构建一个标记(链接)。问题是我只能让我的链接在 prod 或 dev 中工作,而不能同时在两者中工作。这是我网站的生产网址。

http://tvap.mydomain.com

这是我的开发网址。 http://localhost/TVAP

因此,我有一个通过 jquery 创建的链接,如下所示。

  var actionCell = $('#itemlist').find(rowId).find(actionCellId);
  $('<a>Edit</a>').attr({ 'id': 'edit-' + response.id, 'href': '/Items/Edit/' + response.id }).appendTo(actionCell);

在生产中,这有效,并创建了一个链接

 <a id="edit-17" href="/Items/Edit/17">

但在开发(本地)中它不起作用,因为我需要它。

 <a id="edit-17" href="/TVAP/ItemManagement/Edit/17">

我从中得到以下信息

 $(location).attr('host') ==> localhost
 $(location).attr('host') ==> http://localhost/TVAP/Items/Index

要么信息太少,要么信息太多。我知道我可以检查 localhost 并根据需要附加 TVAP,但这看起来像是 hack。另一个开发人员可能使用 ASP.NET VS 开发服务器并获得一个 URL 将包含本地主机但没有我得到的 TVAP。 即 - http://localhost:64301/Items/Index

最佳答案

这是我在 _Layout.cshtml 中经常做的事情:

<head>
    <!-- other stuff -->
    <script type="text/javascript">
        window.myProjectName = {
            baseUrl : '@Url.Content("~/")'
        };
    </script>
    <!-- other scripts -->
</head>

然后您始终可以使用诸如 myProjectName.baseUrl+"Controller/Action" 之类的东西从您自己的 javascript 文件访问您的资源。这有助于您将 View 与 javascript 分开,这是一件非常好的事情。

您不想混合使用标记和 javascript - 这是一个有很长的路要走的妥协。

关于javascript - 在开发和生产环境中获取基本 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8446016/

相关文章:

javascript - 使用 Jquery 从其他文件加载导航时的响应式菜单

javascript - 使用 JsonPath 和 karate.eval 在 Karate 中进行数组排序和匹配

javascript - 我在使用 javascript 播放拉斯维加斯幻灯片时遇到问题

jquery - 我无法检查父级是否已被删除

javascript - 动态添加复选框时,用于从组中选择一个复选框的 JQuery 脚本不起作用

javascript - 更改 javascript 版本后 onclick() 失败

javascript - jQuery : return this

javascript - 如何在 Yii javascript 中使用复选框隐藏或显示文本字段

jquery - 如何停止接收 : TypeError: $(. ..).attr(...) 未定义?

javascript - Sketch.js如何导出/导入数据(导入为图像,透明线不透明)