JQuery“获取”没有获得MVC4中的绝对路径

时间:2012-05-08 15:48:01

标签: jquery get asp.net-mvc-4

在我的开发框中,我的网站的URL是“http:// localhost:portname / home”,当我在登录后单击右上角的“Hello”时,我需要的路径是“本地主机:/帐户/ GetTabContent / TAB1"

使用以下jQuery代码:

var url = "/Account/GetTabContent/tab1";
var targetDiv = $('#div1');
$.get(url, null, function (result) {
  $(targetDiv).html(result);
});

这在我的盒子上工作正常。但是,当我们将它部署到我们的测试服务器时,实际网站的路径是:

http://server name/website folder/home

现在,当我在登录后单击名称时,仍然会将我带到

http://server name/Account/GetTabContent/tab1

我收到404错误。我该怎么强迫它去

http://server name/website folder/GetTabContent/tab1

我希望我的问题有道理。如果没有,请告诉我,我会澄清

** * * 修改 * ****

好的,我们通过更改以下代码来修复问题(从网址中删除了控制器名称,想知道在调用另一个控制器的操作时这将是怎样的)

**var url = "GetTabContent/tab1";**
var targetDiv = $('#div1');
$.get(url, null, function (result) {
$(targetDiv).html(result);
});

2 个答案:

答案 0 :(得分:1)

通常我建议使用Url Helpers设置路径,因此在上面的代码中请执行此操作:


var url = '@Url.Action("GetTabContent", "Account", new { id = "tab1" })';
var targetDiv = $('#div1');
$.get(url, null, function (result) {
  $(targetDiv).html(result);
});

在接受网址的地方(例如脚本标签等),请使用代字号指定您的网址,例如:


<script src="~/Scripts/foo.js"></script>

(这假定MVC 4,但由于这是标记我觉得这看起来很公平:))

而不是指定您可能希望在部署时更改的位置的相对或更差的绝对路径。

答案 1 :(得分:0)

我在很多框架上遇到同样的问题我的解决方案是将表单的操作设置为我希望它去的地方,因为mvc通常使用与echo Form:open('action');类似的东西,它会产生一个绝对的路径熊记住这是在一个PHP框架,但id假设asp提供类似的东西,所以我使用我的jquery

$.post($(this).attr('action'), $(this).serialize(), function and so on