我想知道如何使用jQuery AJAX从PHP脚本中检索返回true或返回false。这是我目前的ajax调用代码,除了始终指向输入用户名的个人资料页面之外,即使登录实际上没有成功,也可以正常工作...
$("#signInForm").submit(function() {
$(document).ajaxStart(function() {
$("#loading" ).show();
});
$.ajax({
url: "/ajax/signIn.php", // Action of the form
data: $("#signInForm").serialize(), // Send forms data to server
dataType: "JSON", // Take response as JSON
type : "POST", // Send form by post or get
complete: function(result) {
$(document).ajaxStop(function() {
$("#loading" ).hide();
});
$("#ajaxResponse").html(result.responseText);
$("#ajaxResponse").slideDown("slow");
var username = $("#usernameSignIn").val();
setTimeout(function() {
window.location.href = "/profile.php?username=" + username;
}, 3000);
}
});
return false; // Default submit return false
});
答案 0 :(得分:0)
complete
会触发 - 无论结果如何 -
我想只要它需要response
- 它是完全可以接受的。
否则,您可能希望使用success
,但在这种情况下,您需要做的是根据response
即:
if(response === true){ //proceed
}else{ alert("error!"); }
你必须将自己的逻辑放在complete
& success
仅关注数据的实际传输,而不关注数据的内容。
因此,在您的代码中:
$("#signInForm").submit(function() {
$(document).ajaxStart(function() {
$("#loading" ).show();
});
$.ajax({
url: "/ajax/signIn.php", // Action of the form
data: $("#signInForm").serialize(), // Send forms data to server
dataType: "JSON", // Take response as JSON
type : "POST", // Send form by post or get
complete: function(result) {
$(document).ajaxStop(function() {
$("#loading" ).hide();
});
$("#ajaxResponse").html(result.responseText);
$("#ajaxResponse").slideDown("slow");
if(result.success === true){
var username = $("#usernameSignIn").val();
setTimeout(function() {
window.location.href = "/profile.php?username=" + username;
}, 3000);}
else { //the result.responseText is probably suitable here, eh? so you could just:
$("#ajaxResponse").slideUp(5000); }
}
});
return false; // Default submit return false
});