我无法让changeuserjudge.php打开。我把它放在其他几个地方没有任何成功。谁能告诉我为什么会这样?
JQuery的:
$('#userCreateSave').click(function(){
var success = false;
var createUserName = $('#createUserName').val();
var createUserEmail = $('#createUserEmail').val();
var createUserType = $('#createUserType').val();
if (jQuery.trim($('#createUserEmail').val()).length<1){
alert ("Please enter an email address.");
return false;
}
else {
$.ajax({
type: "POST",
url: "adminmenu.php",
data: 'createUserName=' + createUserName + '&createUserEmail=' + createUserEmail+ '&createUserType=' + createUserType,
success: function(){
success = true;
$('#newCreateRow').remove();
$('#tableUsers tr:first').after('<tr class="altr"><td>-</td><td>'+createUserName+'</td><td>'+createUserEmail+'</td><td>'+createUserType+'</td><td>Active</td></tr>');
$('#newUserLink').show();
}
});
}
if(success) {
window.open("changeuserjudge.php");
}
});
答案 0 :(得分:2)
为什么不在成功函数中打开。从而确保在ajax呼叫完成时调用它。它不会将其设置为true,因为ajax是异步的
答案 1 :(得分:2)
ajax中的第一个a表示异步,这意味着成功回调被调用出正常流,因此在if(success)
语句之后。你应该把window.open("changeuserjudge.php");
放在成功回调中。
答案 2 :(得分:1)
创建一个名为success
的函数,而不是设置一个名为success()
的布尔值,并在请求完成后执行它。您的代码无法正常运行,因为success
调用后$.ajax()
会立即生效。
执行模式:
.ajax()
success == false
AJAX完成:设置success = true
功能结束
可能的实施:
var success = function(){
window.open("changeuserjudge.php");
}
$.ajax({
type: "POST",
url: "adminmenu.php",
data: 'createUserName=' + createUserName + '&createUserEmail=' + createUserEmail+ '&createUserType=' + createUserType,
success: function(){
success(); //Execute the callback function: `success()`
$('#newCreateRow').remove();
$('#tableUsers tr:first').after('<tr class="altr"><td>-</td><td>'+createUserName+'</td><td>'+createUserEmail+'</td><td>'+createUserType+'</td><td>Active</td></tr>');
$('#newUserLink').show();
}
});
}
答案 3 :(得分:1)
你应该包括
window.open("changeuserjudge.php");
在sucess回调函数中,还要确保记录以查看是否执行了sucess函数
console.log("success")
你创建的局部变量成功与选项成功无关,它总是错误的。