Ajax.beginform回调属性,无法理解差异

时间:2014-10-23 14:30:36

标签: javascript jquery ajax asp.net-mvc ajax.beginform

我阅读了一篇描述Ajax.Beginform回调属性的在线文档,如下所示: -

  • OnBegin(在jquert中是beforeSend): - 在发送请求之前立即调用
  • OnComplete(在jQuery中完成): - 如果请求成功则调用
  • OnFailure(在jQuery中是错误的): - 如果请求失败则调用
  • OnSuccess(在jquery中成功): - 在请求完成时调用,无论请求是成功还是失败

现在我无法理解“ 在请求完成时调用的含义,无论请求是成功还是失败 ”。让我们举几个例子: -

  • 现在,如果我从我的应用程序返回http 401错误,将调用哪个脚本,我会假设OnFailure ?,或者因为我返回结果,将调用onsuccess?

    < / LI>
  • 如果引发了一个UN-handeled异常,那么我假设将调用OnFailure,但是OnComplete也会被激活吗?

由于 谢谢

2 个答案:

答案 0 :(得分:1)

这意味着在请求完成时将调用给定的函数。您的请求可能由于某种原因成功或失败,但无论请求是成功还是失败,都将执行给定的功能。

实施例: 你定义一个函数,让我们称之为回调。

案例1:您发送请求,成功到达服务器,并在响应后执行回调。

案例2:您发送的请求不成功,例如目标不存在。在这种情况下也会执行回调。

enter image description here

答案 1 :(得分:1)

假设服务器发回响应(404,500,200,302等),将始终有3个回调连续。 OnBegin回调是第一个被调用的回调。然后发送请求,服务器发回确认。如果请求成功,则会调用OnSuccess;如果没有,OnFailure被调用。完成OnSuccessOnFailure之一后,将调用OnComplete回调。

您可以通过这种方式“可视化”:

          |--success -> OnSuccess() -->|
OnBegin-->                              >--> OnComplete
          |--error   -> OnFailure() -->|

------------time line-------------------------->

当然,成功/错误状态需要先回到客户端。