我有一个控制器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错误,我不知道为什么?关于如何调试这个的任何建议或建议?
答案 0 :(得分:4)
您已对网址进行了硬编码:
url: "/Validation/EmailExist"
那是非常糟糕。在处理网址时,您应该始终使用网址助手:
url: "@Url.Action("EmailExist", "Validation")"
这很糟糕的原因是因为您已经对网址进行了硬编码,因此您不再依赖路由配置。如果您在Global.asax中更改路线,您的代码将会中断。在IIS中部署应用程序时,您的代码也会中断,因为现在有一个您应该考虑的虚拟目录名称。因此,正确的网址不再是/Validation/EmailExist
,而是/MyAppName/Validation/EmailExist
。帮助者会考虑所有这些事情,这就是你应该总是使用它们的原因。
当然,如果这是在一个单独的javascript文件中,你无法访问服务器端代码,你可以在DOM中使用HTML5 data- *属性来放置正确的url或直接使用一些现有的元素,如表格动作或锚点href。