Javascript jquery AJAX中XMLHttpRequest对象的状态

Javascript jquery AJAX中XMLHttpRequest对象的状态,javascript,ajax,jquery,Javascript,Ajax,Jquery,在传统的javascript AJAX中,我们知道readystate是否为: 0-请求未初始化 1-请求已设置 2-请求已发送 3-请求正在处理中 4-请求已完成。 说到jQuery AJAX,我们有: complete属性,我们在该属性中对完成后应该发生的事情进行编码 success属性,在该属性中,我们对ajax请求成功时应发生的情况进行编码 error属性,在该属性中,我们编码ajax请求失败时应该发生什么 以上所有属性都允许我们编写代码,在完成ajax请求后执行某些操作。在jQ

在传统的javascript AJAX中,我们知道
readystate
是否为:

  • 0-请求未初始化
  • 1-请求已设置
  • 2-请求已发送
  • 3-请求正在处理中
  • 4-请求已完成。
说到jQuery AJAX,我们有:

  • complete
    属性,我们在该属性中对完成后应该发生的事情进行编码
  • success
    属性,在该属性中,我们对ajax请求成功时应发生的情况进行编码
  • error
    属性,在该属性中,我们编码ajax请求失败时应该发生什么
以上所有属性都允许我们编写代码,在完成ajax请求后执行某些操作。在jQueryAjax中,在哪里可以指定一些代码来在处理过程中执行某些操作(readyState为3)

由于我的AJAX脚本执行时间太长,这意味着我不会很快达到“完成”阶段。这似乎对用户没有任何影响。我想在处理阶段启动另一个ajax脚本,它同时从服务器获取信息,并向用户展示到目前为止所做的工作。在Javascript中是否可能?我知道Javascript中没有多线程


我想我已经说清楚了。但是,如果有什么不合理的地方,请告诉我。

我通过启动第一个长时间运行的请求来处理这个问题,立即返回给用户,并允许进程在服务器端进行扩展处理

对用户的初始返回ajax调用通过一个针对对象的标志将用户设置为“监视”该进程(我将它们针对对象存储在数据库中,但您可以监视文件大小或其他内容)

随后的ajax调用在一个循环中发生,每个调用都返回下一个调用的setTimeout,并报告对该标志的更改,以便可以看到长时间运行的进程的进度。完成长时间运行的流程将提示不发送另一个setTimeout()并显示总体结果

如果您的进程没有那么密集,那么一个简单的微调器可能会完成这项工作,而不会对您的服务器进程产生任何影响。我通常会让$.ajax翻转一个“微调器”图标的可见性,该图标预装在我的页面上的同一位置供所有人使用。

根据,它们不会公开readystate更改事件:

但是,没有提供onreadystatechange机制,因为成功, 错误、完整和状态代码涵盖所有可能的要求


在初始Ajax请求启动之后(以及在获得任何“完成”或“成功”之前),可以显示加载图像事件,然后开始通过ajax轮询不同的URL,该URL将为您提供第一个请求的状态,假设您的服务器可以在完成之前显示长过程的进度。

在服务器不返回数据之前,ajax将如何处理?因此您可以使用加载图像向用户显示数据正在加载,并且您应该d检查代码以优化它。可能重复:请注意,使用
$的
xhr
选项可以克服此限制。ajax