0

在我的开发框中,我网站的 URL 是“http://localhost:portname/home”,当我在登录后单击右上角的“Hello”时,它带我到的路径是“localhost:/帐户/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

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

** * *编辑* ****

好的,我们通过更改以下代码解决了问题(从 url 中删除了控制器名称,想知道调用另一个控制器的操作时会怎样)

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

2 回答 2

1

一般来说,我建议使用 Url Helpers 设置路径,所以在上面的代码中这样做:


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

在接受 url 的地方(例如脚本标签等),使用波浪号指定您的 url,例如:


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

(这假定 MVC 4,但由于它被标记,我认为这似乎是公平的 :))

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

于 2012-05-12T05:01:04.287 回答
0

我在很多框架上都有同样的问题我的解决方案是将表单的操作设置为我想要它去的地方,因为 mvc 通常使用类似于echo Form:open('action');踢出绝对路径的东西记住这是在 php 框架上但我假设 asp 提供类似的东西,所以我用我的 jquery

$.post($(this).attr('action'), $(this).serialize(), function and so on
于 2012-05-08T15:50:55.583 回答