我如何知道jQuery是否有待处理的Ajax请求?

sab*_*ito 85 ajax jquery xmlhttprequest

我在使用jQuery控件时遇到了一些问题.假设您有一个下拉列表,允许您输入您要查找的项目的ID,当您按下ENTER或在文本框中失去焦点时,它会通过jQuery验证您输入的ID是否正确,如果它没有显示警告"T.

问题是,当普通用户在其中输入无效值并通过按下提交按钮失去焦点时,jQuery帖子会在发送表单提交后返回.

有什么方法可以检查jQuery是否有任何异步请求处理,以便我不允许表单提交?

siv*_*udh 219

$.active 返回活动Ajax请求的数量.

更多信息在这里


cee*_*yoz 36

您可以使用ajaxStartajaxStop来跟踪请求何时处于活动状态.

  • 2019 年链接已过时 (2认同)

小智 24

 $(function () {
        function checkPendingRequest() {
            if ($.active > 0) {
                window.setTimeout(checkPendingRequest, 1000);
                //Mostrar peticiones pendientes ejemplo: $("#control").val("Peticiones pendientes" + $.active);
            }
            else {

                alert("No hay peticiones pendientes");

            }
        };

        window.setTimeout(checkPendingRequest, 1000);
 });
Run Code Online (Sandbox Code Playgroud)


Toj*_*oji 11

$ .ajax()函数返回XMLHttpRequest对象.将其存储在可从"提交"按钮的"OnClick"事件中访问的变量中.处理提交点击时,检查XMLHttpRequest变量是否为:

1)null,表示尚未发送任何请求

2)readyState值为4(已加载).这意味着请求已成功发送和返回.

在任何一种情况下,返回true并允许提交继续.否则返回false以阻止提交,并向用户提供一些说明,说明他们的提交无效.:)

  • 检查null以确定请求对象是否存在很重要,但如果它不为null,则应该检查`request.readyState> 0 && request.readyState <4`以确定'active'请求,因为readyState 0表示尽管已创建对象,尚未启动Web请求. (4认同)