我的ajax运行时是否可以刷新页面而不会将其删除?

时间:2018-01-23 05:14:29

标签: javascript c# asp.net ajax model-view-controller

我有一个网页,其中包含一个调用java脚本的链接。

在那个java脚本中,我有一个调用我的库文件中执行存储过程的函数的ajax调用。

运行SP后,控件返回到我的java脚本,因为ajax是异步的。

我试图在后台运行该呼叫时刷新我的页面。 但是当我这样做时,这个过程就会被杀死。

有没有什么方法可以刷新页面而不会杀死进程?

2 个答案:

答案 0 :(得分:0)

您只需使用

即可
$.ajax({
    success: function(){
          // Do stuff once finished.                
    },
    error: function (){
          // Do stuff if the server returns an error.
    },
    complete: function (){
          // Do stuff always after the request (after success & error ran)
    }
});

或者您可以使用方法链接

  

&安培;阿贾克斯({...})来完成(函数(){});

可以在jQuery文档中找到更多信息。

最后的说明:请注意,编写快乐案例并不好。您无法强制服务器成功运行。如果服务器遇到 OutOfMemoryException 怎么办?如果一个组件无法控制(通常是用户,但在这种情况下是服务器),请务必进行错误处理。

答案 1 :(得分:0)

如果您通过刷新URL来中断浏览器发出请求,它将停止正在执行的操作并重新加载。

根据您的服务器需要通过返回对您的ajax调用返回响应的处理量,您可以停止服务器在其操作过程中完成它的工作,如果您正在处理数据库,这可能会产生严重影响等等。

确保您所做的所有请求都能正确完成,并有效处理任何错误,这一点非常重要,因此您将来不会遇到任何问题。

通过ajax调用,您可以使用ajax对象中的成功和错误值对成功或不成功的请求执行操作。 E.g。

$.ajax({
   url: "www.example.com/get",
   type: "GET",
   success: function() {
      alert("Success!");
   },
   error: function() {
      alert("Error!");
   }
});

编辑:根据您之前关于服务器流程错过了很长时间才完成的评论,我想说服务器上需要做的任何事情应该与用户分开进行相互作用。如果您需要编写大量数据库行,上传文件,发送电子邮件以及您可能需要的任何其他内容,那么您应该只执行当时绝对必要的操作并将其他所有内容排队到服务器上直接在计划任务上进行批处理,独立于用户的浏览器。 ajax调用只应用于发出将在短时间内执行的请求;主要是为了您的应用程序的安全性,但同样简化用户体验。