【问题标题】:ajax calls to controllers. How to indicate success, complete, and errorajax 调用控制器。如何指示成功、完成和错误
【发布时间】:2012-03-19 02:08:08
【问题描述】:

如果我对控制器进行 ajax 调用......控制器中需要发生什么以便 ajax 调用然后调用

1) 完成:
2) 成功:
3) 错误:
4) 存在的任何其他回调。

例如。我有这个 ajax 调用。

 $.ajax({
         url: "/ContactPartial/ContactUs",
         type: "POST",
         data: JSON.stringify(data),
         dataType: 'json',
         contentType: "application/json; charset=utf-8",
         complete: function () {  },
         success: function () {  },
         error: function () {  }
   });

换句话说,我可以在 /ContactPartial/ContactUs 中做什么来控制在控制器代码执行后调用 3 个(完成、成功、错误)中的哪一个。

另外,这和return Json(new {some: data});有什么关系

【问题讨论】:

    标签: javascript asp.net ajax


    【解决方案1】:

    这三个回调与 Ajax 调用的状态有关。这些调用取决于调用的成功。有关完整的详细信息,请参阅documentation

    因此,如果服务器响应成功 (200),那么 Success 和 Complete 处理程序都会被调用。在完整的处理程序中,您可能会放置一些代码来关闭模式窗口(无论成功或错误),并且在成功函数中,您可能会放置代码让用户知道调用成功,重新加载网格视图等。另外,请记住,回调函数不必是匿名函数,它们可以是在多个 Ajax 调用之间共享的已定义函数。

    编辑:

    如果您想强制服务器生成错误,请查看:

    HttpResponse 类,特别是 StatusCode 属性

    This SO 帖子也解释了更多(产生 401 错误)

    【讨论】:

    • 感谢您的解释。但是什么决定了哪些代码从服务器返回?例如,我可以以编程方式(在控制器中)强制返回错误代码吗?成功代码?
    • 仅当您可以强制服务器返回错误时。它的工作方式是你发送一个请求,服务器用一个状态码响应,表示请求的成功/失败/错误。
    • 对不起,我还是不明白如何强制服务器返回错误。你的意思是向 ModelState 添加一个 ModelError 然后返回模型吗?也许一个代码示例会有很长的路要走。
    • 好吧,如果你提供了一个不存在的 url,那会导致错误。向需要身份验证的网站提供的带有凭据的请求也会导致错误。
    • 是的,但这就是 ajax 请求中导致的所有错误,但没有解释如何从控制器内部强制出错。例如:用户尝试注册一个帐户。在发送电子邮件验证时,SmtpClient 会引发异常,该异常会被 catch 块捕获。如何立即跳出控制器并直接返回错误回调(带有一些错误消息)?我肯定错过了什么。再次感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-03-06
    • 2013-07-01
    • 1970-01-01
    • 2014-12-23
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多