Popup不会在JQuery Ajax成功时打开

时间:2011-10-18 14:33:12

标签: javascript jquery ajax

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

4 个答案:

答案 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")

你创建的局部变量成功与选项成功无关,它总是错误的。