我使用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
。
这是问题的原因吗?如果有,我该如何解决?
谢谢你!答案 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请求时显示一些加载图像。这样,用户将理解后台正在发生的事情。当这个过程完成后处理响应。