ASP.NET MVC中的Ajax调用中URL错误

5

我的ajax调用中URL有误。

$.ajax({
    type: "POST",
    url: "Home/GetDetails",
    ......
});

HomeController 有一个名为 GetDetails() 的动作。

当我加载 URL htp://localhost/projectName 时,一切正常。Ajax URL 是 htp://localhost/projectName/Home/GetDetails。

但是,在加载 htp://localhost/projectName/Home/Index 后,我的所有 ajax 调用都会转到 htp://localhost/projectName/Home/Home/GetDetails,这是错误的。

请问,如何解决这个问题?

2个回答

10

你应该使用 Url Helper 来生成你的 URL ...

$.ajax({
    type: "POST",
    url: "<%= Url.Action("GetDetails") %>",
    ......
});

1
大部分是正确的,但这里应该使用Url.Action而不是Url.Content。 - Craig Stuntz

5
如果你使用字符串而不是Url.Action,请在'Home'前加上斜杠。
url: "/Home/GetDetails"

1
这假设您的应用程序始终托管在网站的根目录下。如果您有多个托管的应用程序,则很可能每个应用程序都有自己的虚拟目录。您可以硬编码整个URL,包括虚拟目录,或者使用MVC中的URL助手动态生成URL(这应该始终有效)。 - Eilon
2
当您拥有一个包含所有 JavaScript 代码的单独 js 文件时,您该怎么做? - YodasMyDad
我倾向于硬编码(吸气!)URL。如果有时间,我可能会在服务器上生成一个JS文件,并将其中的URL分配给适当的JavaScript变量,但我对此并不实用。 - swilliams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接