JQueryAjax成功后弹出窗口不会打开

Popup wont open upon JQuery Ajax success

本文关键字:窗口 成功 JQueryAjax      更新时间:2023-09-26

我无法打开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"); 
                    }
            });     

为什么不把开放放在成功函数中呢。从而确保在ajax调用完成时调用它。它不会将其设置为true,因为ajax是异步

ajax中的第一个a表示异步,这意味着成功回调在正常流中调用,因此在if(success)语句之后调用。您应该将window.open("changeuserjudge.php");放入成功回调中。

创建一个名为success()的函数,并在请求完成后执行它,而不是设置一个称为success的布尔值。您的代码不能按预期工作,因为success$.ajax()调用后立即为false。

执行模式:

.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();
        }
    }); 
}

您应该包括

window.open("changeuserjudge.php"); 

在sucess回调函数中,还要确保登录以查看sucess函数是否已执行

console.log("success")

您创建的局部变量success与选项success无关,它总是错误的。