4

我有一个控制器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 错误,但我不知道为什么?关于如何调试它的任何建议或建议?

4

1 回答 1

3

您已经硬编码了一个网址:

url: "/Validation/EmailExist"

很糟糕。在处理 url 时,您应该始终使用 url 助手:

url: "@Url.Action("EmailExist", "Validation")"

这不好的原因是因为您已经对 url 进行了硬编码,您不再依赖于您的路由配置。如果您在 Global.asax 中更改您的路线,您的代码将会中断。当您在 IIS 中部署应用程序时,您的代码也会中断,因为现在您应该考虑一个虚拟目录名称。所以正确的 url 不再是/Validation/EmailExistbut /MyAppName/Validation/EmailExist。助手会考虑所有这些事情,这就是为什么您应该始终使用它们的原因。

当然,如果这是在您无法访问服务器端代码的单独 javascript 文件中,您可以在 DOM 中使用 HTML5 data-* 属性来放置正确的 url 或直接使用一些现有元素,例如表单操作或锚href。

于 2012-05-15T15:16:01.400 回答