我有一个 Controller ValidationController
它有一个名为 EmailExist
的方法
我有一个ajax调用
$.ajax({
type: "POST",
url: "/Validation/EmailExist",
data: { 'Email': $('#Email').val() },
success: function (result) {
if (result == true) {
alert("true");
} else {
alert("false");
}
},
error: function (error) {
alert(error.responseText);
}
我收到 404 错误,但我不知道为什么?关于如何调试这个问题有什么建议或建议吗?
最佳答案
您已硬编码一个网址:
url: "/Validation/EmailExist"
这非常糟糕。在处理 url 时,您应该始终使用 url 助手:
url: "@Url.Action("EmailExist", "Validation")"
这不好的原因是因为你已经硬编码了 url,你不再依赖你的路由配置。如果您更改 Global.asax 中的路线,您的代码将会损坏。当您在 IIS 中部署应用程序时,您的代码也会中断,因为现在您应该考虑一个虚拟目录名称。因此,正确的 url 不再是 /Validation/EmailExist
而是 /MyAppName/Validation/EmailExist
。助手会考虑所有这些事情,这就是您应该始终使用它们的原因。
当然,如果这是在一个单独的 javascript 文件中,而您无法访问服务器端代码,则可以在 DOM 中使用 HTML5 data-* 属性来放置正确的 url 或直接使用某些现有元素,例如表单操作或 anchor href。
关于ajax - 为什么在 Ajax 中访问 Controller 方法时会收到 404 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10603766/