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调用。