我正在使用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请求时显示一些加载图像。通过这种方式,用户将理解后台正在发生的事情。此过程何时结束,请处理响应。