[英]Return statement executes before ajax response
我正在对“提交按钮单击”事件进行ajax调用,以检查字段验证服务器端。 当验证失败时,ajax响应会给出正确的错误消息,返回false,然后停止将表单提交给操作URL。 但是,当我收到“成功”的响应时,表单仍未提交给动作url脚本。
当return语句在ajax响应之前执行时,是这种情况吗?
还有为什么表格没有提交?
这是代码:
<input type="submit" onclick="return validate();" name="submit" value="Proceed" />
<script type="text/javascript">
var flag=false;
function validate(){
$.ajax({
type:"POST",
url:"../chk.php",
data:datastring,
cache: false,
success: function (result) {
if(result.toString() == "success" ){
flag=true;
}
else{
$('#error').css('display', 'block');
$('#error').css('color','red');
$('#error').text(result.toString());
flag=false;
}
}
});
return flag;
}
</script>
一种方法是
使用async : false
将async设置为false意味着要调用的语句必须先完成,然后才能调用函数中的下一条语句。
$.ajax({
type:"POST",
url:"../chk.php",
data:datastring,
cache: false,
async : false,
success: function (result) {
以及为什么要返回ajax函数外部的值,如果不使用async : false
返回ajax成功内部的值async : false
$.ajax({
type:"POST",
url:"../chk.php",
data:datastring,
cache: false,
success: function (result) {
if(result.toString() == "success" ){
flag=true;
}
else{
$('#error').css('display', 'block');
$('#error').css('color','red');
$('#error').text(result.toString());
flag=false;
}
}
return flag;
});
Ajax是异步的,因此您应该将一个函数作为参数传递给该函数,然后在ajax调用成功后执行它。
function my_callback() {
alert('done');
}
function validate(cb) {
$.ajax({
/* ... */
success: function() {
cb();
}
});
}
您传递给validate
的函数将在success
调用函数后执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.