发起的ajax请求会在浏览器关闭后发生什么?

时间:2017-06-26 05:28:12

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

这是面试问题之一

例如:

让我们说有一个MVC应用程序。 在View中我们编写了一个调用MVC控制器的ajax方法

$("#SubmitCompany").click(function(){

   var jqxhr = $.post( "\Company\Save", function() {
     alert( "success" );
   })
  .done(function() {
    alert( "second success" );
  })
  .fail(function() {
    alert( "error" );
  })

   jqxhr.always(function() {
      alert( "second finished" );
   });

});

保存方法中,我们编写了一个处理数据并将其存储在数据库中的功能。我们还会回答一下它是成功还是失败。

所以问题是:

  1. 如果我们在此之后发起请求并关闭浏览器会怎样?
  2. 此场景中的输出结果(根据Ajax调用编写)

3 个答案:

答案 0 :(得分:0)

在我看来,如果请求被发送并发送到服务器并且突然浏览器关闭,那么将对服务器进行任何更改,但是这里没有客户端,因此它什么都不做,并且不会输出。

另一个条件是,如果请求没有在服务器上进行,并且浏览器被关闭,那么它对两者都没有任何作用。

答案 1 :(得分:0)

无论客户端操作员(程序等)完全发送需求的时间长短,服务器都拥有它所需要的所有时间并完成需求并尝试发回反应。

确实,这种" pinging"行为经常被用于"脉冲" - 类似的程序,使管理保持温暖或执行间歇性维持。

答案 2 :(得分:0)

恕我直言,不同的语言有不同的方式来处理服务器上的客户端连接状态。要回答您的问题,这取决于请求进入服务器执行的程度。如果服务器具有执行请求所需的所有输入,那么它将继续这样做。

但是,如果有任何可靠的方法来检测客户端在执行过程中已中止,则可以使用服务器代码决定是继续还是中止进一步执行。我不是.NET专家,但是从answer开始,看起来您可以使用Response.IsClientConnected来确定客户端浏览器是否中止请求并确定操作和输出的过程。

例如,在PHP中,维护连接状态。有4种可能的状态,您可以根据这些状态决定是否希望客户端断开连接以导致脚本中止。

即使没有远程浏览器接收输出,有时总是让脚本运行完成也很方便。但是,默认行为是在远程客户端断开连接时中止脚本。