等待ajax请求完成后,each()jquery才能继续


Wait until ajax request is done before each() jquery continue

我正在使用Jquery ajax检查注册表。

这是我的代码:

            $("input.register_input").each(function()   {
                name= this.name;
                $(".ono#"+name).html("<img src='images/ajax-loader.gif'>");
                if (name == 're_password')  {
                    var dts =  this.name+"="+$(this).val()+"&pass="+$("input[name='password']").val();
                }   else    {
                    var dts =  this.name+"="+$(this).val();
                }
                $.ajax({
                    type: "POST",
                    url: "ajc/register_check.php",
                    data: dts,
                    success: function(resultfrompage){ 
                        $(".ono#"+name).html(resultfrompage);
                        }
                });
            });

这是在用户提交表单之后。所以我不能一次检查所有值。

我不完全确定这是否是问题所在,但我认为each()循环在ajax请求完成之前就已经运行了,所以我只得到了1个值(最后一个)。其余部分仍显示CCD_ 2。

这就是问题的原因?如果是,我该如何修复?

谢谢!

尝试使用async:false。

默认情况下,所有请求都是异步发送的(即设置为默认为true)。如果需要同步请求,请将此选项设置为false。跨域请求和数据类型:"jsonp"请求不支持同步操作。请注意,同步请求可能暂时锁定浏览器,在请求时禁用任何操作处于活动状态。从jQuery 1.8开始,在jqXHR中使用async:false($.Deferred)已弃用;您必须使用成功/错误/完成回调选项,而不是jqXHR的相应方法对象,如jqXHR.done()或不推荐使用的jqXHR.success().

$("input.register_input").each(function()   {
            name= this.name;
            $(".ono#"+name).html("<img src='images/ajax-loader.gif'>");
            if (name == 're_password')  {
                var dts =  this.name+"="+$(this).val()+"&pass="+$("input[name='password']").val();
            }   else    {
                var dts =  this.name+"="+$(this).val();
            }
            $.ajax({
                type: "POST",
                async: false,
                url: "ajc/register_check.php",
                data: dts,
                success: function(resultfrompage){ 
                    $(".ono#"+name).html(resultfrompage);
                    }
            });
        });

我建议您在处理Ajax请求时显示一些加载图像。通过这种方式,用户将理解后台正在发生的事情。此过程何时结束,请处理响应。