等到每个()jquery继续之前完成ajax请求

时间:2014-04-18 10:54:11

标签: php jquery ajax

我使用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个值(最后一个)。其余的仍显示ajax-loader.gif

这是问题的原因吗?如果有,我该如何解决?

谢谢你!

2 个答案:

答案 0 :(得分:1)

尝试使用async:false

  

默认情况下,所有请求都是异步发送的(即设置为   默认为true)。如果需要同步请求,请将此选项设置为   假。跨域请求和dataType:&#34; jsonp&#34;请求没有   支持同步操作。请注意,同步请求可能   暂时锁定浏览器,在请求时禁用任何操作   活跃。从jQuery 1.8开始,使用async:false和jqXHR   ($ .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);
                    }
            });
        });

答案 1 :(得分:0)

我建议您在处理Ajax请求时显示一些加载图像。这样,用户将理解后台正在发生的事情。当这个过程完成后处理响应。