ajax - 为什么在 Ajax 中访问 Controller 方法时会收到 404 错误?

标签 ajax asp.net-mvc jquery asp.net-mvc-controller

我有一个 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/

相关文章:

ajax - 在加载数据之前显示 Ajax 加载器

javascript - AJAX Rails - 请求明显丢失 - 没有 UI 结果

javascript - 在普通 js 中提交表单不会触发 jquery 附加的事件

javascript - 字段值的乘法

php - 单击时 ajax 填充的列表项不填充输入

java - 发送 GET 方法而不是 DELETE

c# - ASP.NET MVC - 填充常用的下拉列表

asp.net-mvc - 允许用户在 ASP.NET MVC 中输入 HTML - ValidateInput 或 AllowHtml

c# - MVC 应用程序中的授权和身份验证

javascript - 修正了语法错误