我有这个代码可以使用。
$.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,
..
.
.
.
等
但是,我需要在成功时停止脚本:function(data)为false。
所以,我认为return 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调用成功后执行此代码?
答案 0 :(得分:4)
您的额外代码应该在回调中。
$.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");
}
}
});
答案 1 :(得分:1)
你可以
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
});
然后,您可以在成功函数中设置var,以告知代码的其余部分是否继续。
答案 2 :(得分:1)
您还可以在AJAX调用中添加async:false
。这样,在请求结束之后,代码将不会执行。 return false
也不会做任何事情,但你可以在成功函数中设置一个标志。
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
}
答案 3 :(得分:0)
由于$.ajax()
是异步的,因此无论如何都会执行代码。您可以将代码放在success
处理程序中。这样,它只有在成功时才会运行。
答案 4 :(得分:0)
AJAX是一个异步调用(因此第一个'A')。这意味着jQuery会发出请求,然后在等待调用完成时继续处理它的业务。
答案 5 :(得分:0)
$.ajax
之后的代码通常在success
函数之前执行,因为$.ajax
调用是异步的。如果保持同步,则无法停止执行其他代码。您可以在外部作用域中设置变量的success
函数值,并使用同步代码。但也许最好将它移动到success
回调调用的函数中?无论如何,为了得到更好的答案,请发布更多代码。
答案 6 :(得分:0)
试试这个:
$.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.
}