Return 语句在 ajax 响应之前执行
Return statement executes before ajax response
我正在对提交按钮单击事件进行 ajax 调用,以检查服务器端的字段验证。
当我收到验证失败时,ajax 响应会给出正确的错误消息 returns false,并停止表单提交给操作 url。但是当我收到 'success' 的响应时,表单仍然没有提交到操作 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>
Ajax 是异步的,所以你应该只将一个函数作为参数传递给函数,然后在 ajax 调用成功时执行它。
function my_callback() {
alert('done');
}
function validate(cb) {
$.ajax({
/* ... */
success: function() {
cb();
}
});
}
您传递给 validate
的函数将在 success
函数调用时执行。
一种方式是
使用async : false
将 async 设置为 false 意味着您正在调用的语句必须在调用函数中的下一个语句之前完成。
$.ajax({
type:"POST",
url:"../chk.php",
data:datastring,
cache: false,
async : false,
success: function (result) {
还有为什么你 return 在 ajax 函数外输入值,return 在 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 响应会给出正确的错误消息 returns false,并停止表单提交给操作 url。但是当我收到 'success' 的响应时,表单仍然没有提交到操作 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>
Ajax 是异步的,所以你应该只将一个函数作为参数传递给函数,然后在 ajax 调用成功时执行它。
function my_callback() {
alert('done');
}
function validate(cb) {
$.ajax({
/* ... */
success: function() {
cb();
}
});
}
您传递给 validate
的函数将在 success
函数调用时执行。
一种方式是
使用async : false
将 async 设置为 false 意味着您正在调用的语句必须在调用函数中的下一个语句之前完成。
$.ajax({
type:"POST",
url:"../chk.php",
data:datastring,
cache: false,
async : false,
success: function (result) {
还有为什么你 return 在 ajax 函数外输入值,return 在 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;
});