【问题标题】:Jquery ajax getting the XMLHttpRequest stateJquery ajax 获取 XMLHttpRequest 状态
【发布时间】:2009-04-03 03:54:23
【问题描述】:

与典型的“正在加载...”或动画 gif 不同,我想更好地描述正在发生的事情。 (有点像一些闪屏为应用程序做的事情)。但是,浏览 Jquery 文档似乎没有办法让 XMLHttpRequest 状态发生变化。

我想做的是这样的

如果 case = 1 显示“开始”

如果 case = 2 显示“越来越接近”

如果 case = 3 显示“我快到了”

如果 case = 4 显示内容

我是否忽略了某些东西,还是应该放弃 jquery 的 ajax 方法并编写自己的方法?

【问题讨论】:

    标签: jquery ajax xmlhttprequest-states


    【解决方案1】:

    您需要在某个时间间隔内轮询 Web 服务,然后返回似乎适合您的应用程序的任何内容(例如您提供的消息)并更新进度指示器。该过程分为两步:第一步是实际启动必须运行的操作,第二步是不断轮询服务器以查看操作是否完成。

    但是,您必须以某种方式将当前操作状态存储在服务器上。我不知道你在使用哪种技术,所以我只能告诉你使用你选择的框架提供的东西,但要确保进程状态设置在一个可以持久化的变量中(HTTP 是无状态的),例如在会话变量中。在正在运行的进程和轮询方法之间同步这个值可能会很棘手。

    总体而言,当在客户端执行处理时,此类启动屏幕更适用于桌面应用程序或 Web 应用程序。当您异步运行的方法驻留在服务器上时,我认为尝试更新进度并不是一个好主意。当您加载资产(如图像或其他文件)时,这样的进度指示器会很好,您可以计算当前加载的项目/大小与总大小等等。不管处理操作是在服务端调用还是在客户端调用,都必须是可数的……

    如果您不想在您的网络应用程序中再出现一个枯燥的“正在加载...”指示器,您可以随机显示一些有趣的引号或数组中的其他文本。

    最佳解决方案 - 尽量减少处理请求所需的时间。 :)

    【讨论】:

    • 感谢您的宝贵建议。你触及了我真的没有想到的东西;这是轮询和重新轮询所需的时间。非常感谢。
    • 没问题。我很高兴能帮上忙。另外,我忘了提到不断轮询服务器也会消耗它的资源——当服务器正在处理某些事情时,你会进行许多“不必要的”调用。现在想想你的用户数和 StackOverflow 一样多。 :)
    猜你喜欢
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2012-06-11
    相关资源
    最近更新 更多