Php 如果成功为false,如何停止jQuery.ajax()执行?

Php 如果成功为false,如何停止jQuery.ajax()执行?,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我有一个有效的代码 $.ajax({ type: "GET", url: "includes/process.php", data: "captcha=" + captcha, success: function(data) { if(data == 'true') alert("OK"); else alert("not ok"); } }); 但是,在这

我有一个有效的代码

$.ajax({
     type: "GET",
     url: "includes/process.php",
     data: "captcha=" + captcha,
     success: function(data) {
         if(data == 'true')
             alert("OK");
         else
             alert("not ok");
     }
});
但是,在这之后我还有一些代码,比如:

var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone + '&message=' + message;

$.ajax({
    type: "POST",
    url: "bin/process.php",
    data: dataString,
    ...
    ...
    ...etc
但是,当success:function(data)为false时,我需要停止脚本

所以,我认为
返回false应该停止执行

    success: function(data) {
        if(data == 'true') {
            alert("OK");
        } else { 
            alert("not ok"); 
            return false; 
        }
    }
,但是它不起作用,并且仍然会执行
$之后的代码。ajax

success
false
时,如何停止脚本

有什么建议吗?提前谢谢

其他信息: 我还有另一个ajax调用,希望在成功时执行:

var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone + '&message=' + message;
$.ajax({
    type: "POST",
    url: "bin/process.php",
    data: dataString,
    success: function() {
       alert ('mail was sent OK');                                 
    }
});

如何仅在第一个ajax调用成功后执行此代码?

您的额外代码应该在回调本身中

$.ajax({
    type: "GET",
    url: "includes/process.php",
    data: "captcha=" + captcha,
    success: function(data) {
        if (data == 'true') {
            alert("OK");
            // more code
            var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone + '&message=' + message;
            // ... second ajax call
        } else {
            alert("not ok");
        }

    }
});

额外的代码应该在回调本身中

$.ajax({
    type: "GET",
    url: "includes/process.php",
    data: "captcha=" + captcha,
    success: function(data) {
        if (data == 'true') {
            alert("OK");
            // more code
            var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone + '&message=' + message;
            // ... second ajax call
        } else {
            alert("not ok");
        }

    }
});

由于
$.ajax()
是异步的,因此之后的代码仍将执行。您可以将代码放入
success
处理程序中。这样,它只有在成功的情况下才会运行。

因为
$.ajax()
是异步的,之后的代码仍然会执行。您可以将代码放入
success
处理程序中。这样,它只有在成功时才会运行。

AJAX是一个异步调用(因此是第一个“A”)。这意味着jQuery发出请求,然后在等待调用完成时继续处理其业务。

AJAX是一个异步调用(因此是第一个“A”)。这意味着jQuery发出请求,然后在等待调用完成时继续处理其业务。

$之后的代码。ajax
通常在
成功
函数之前执行,因为
$.ajax
调用是异步的。如果保持异步,则无法停止其他代码的执行。您可以在
success
函数中设置外部范围内变量的值,并使用同步代码。但也许最好将其移动到一个函数中,由
success
回调调用?无论如何,为了得到更好的答案,请发布更多的代码。

$之后的代码。ajax
通常在
成功
函数之前执行,因为
$.ajax
调用是异步的。如果保持异步,则无法停止其他代码的执行。您可以在
success
函数中设置外部范围内变量的值,并使用同步代码。但也许最好将其移动到一个函数中,由
success
回调调用?无论如何,为了得到更好的答案,请发布更多代码。

您可以
1) 将附加代码添加到回调成功函数

$.ajax({
       type: "GET",
       url: "includes/process.php",
       data: "captcha=" + captcha,
       success:function(data){
          if(data=='true') {
            alert("OK");
            //continue here
            var datastring = ...
          }
          else
            alert("not ok");
       }
}))

2) 通过将此选项添加到.ajax调用中,将ajax调用更改为非异步

var isSuccess = false;
$.ajax({
       type: "GET",
       url: "includes/process.php",
       data: "captcha=" + captcha,
       success:function(data){
            isSuccess = (data=='true');
       },
       async:   false
   });
然后,您可以在success函数中设置一个var,告诉代码的其余部分是否继续。

您可以
1) 将附加代码添加到回调成功函数

$.ajax({
       type: "GET",
       url: "includes/process.php",
       data: "captcha=" + captcha,
       success:function(data){
          if(data=='true') {
            alert("OK");
            //continue here
            var datastring = ...
          }
          else
            alert("not ok");
       }
}))

2) 通过将此选项添加到.ajax调用中,将ajax调用更改为非异步

var isSuccess = false;
$.ajax({
       type: "GET",
       url: "includes/process.php",
       data: "captcha=" + captcha,
       success:function(data){
            isSuccess = (data=='true');
       },
       async:   false
   });
然后,您可以在success函数中设置一个var,告诉代码的其余部分是否继续。

尝试以下操作:

$.ajax({
    type: "GET",
    url: "includes/process.php",
    data: "captcha=" + captcha,
    success: function(data) {
        if (data.length) {
            alert("OK");
            doMoreStuff(data);
        }
    }
});

function doMoreStuff(data){
    // Code here will only be executed if ajax call is successful.
}
试试这个:

$.ajax({
    type: "GET",
    url: "includes/process.php",
    data: "captcha=" + captcha,
    success: function(data) {
        if (data.length) {
            alert("OK");
            doMoreStuff(data);
        }
    }
});

function doMoreStuff(data){
    // Code here will only be executed if ajax call is successful.
}

您还可以将
async:false
添加到AJAX调用中。这样,在请求结束之前,后面的代码不会执行
return false
也不会执行任何操作,但是您可以在success函数中设置一个标志

var isOk = false;
$.ajax({
    type: "GET",
    async: false,    // prevent the asynchronous call
    url: "includes/process.php",
    data: "captcha=" + captcha,
    success: function(data) {
        if (data.length) {
            alert("OK");
            isOk = true;
        }
    }
});

if (isOk) {
    // do your stuff
}

您还可以将
async:false
添加到AJAX调用中。这样,在请求结束之前,后面的代码不会执行
return false
也不会执行任何操作,但是您可以在success函数中设置一个标志

var isOk = false;
$.ajax({
    type: "GET",
    async: false,    // prevent the asynchronous call
    url: "includes/process.php",
    data: "captcha=" + captcha,
    success: function(data) {
        if (data.length) {
            alert("OK");
            isOk = true;
        }
    }
});

if (isOk) {
    // do your stuff
}

如果它出错,那么你可以使用
error:function(data){}
扩展你的
.ajax
函数。如果它出错,那么你可以使用
error:function(data){}
扩展你的
.ajax
函数。但是我有另一个ajax调用,请查看我的帖子我已经更新了我的代码。这会运行吗?@marian,你可以在第一个ajax调用的
success
if
中执行另一个ajax调用。但是我还有另一个ajax调用,请查看我的帖子我已经更新了代码。这会运行吗?@marian,您可以在第一个ajax调用的
success
if
中执行另一个ajax调用。