2011-10-18 26 views
0

我无法获取changeuserjudge.php以打开。我把它放在其他几个地方,没有任何成功。谁能告诉我为什么这是?Popup不会在JQuery Ajax成功时打开

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

您确定AJAX“Success”事件正在触发,“success”实际上是否设置为true? –

回答

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

    }); 
} 
2

为什么不把你的成功功能打开。从而确保在Ajax调用完成时调用它。它不会因为AJAX是异步设置为true

1

你应该包括

window.open("changeuserjudge.php"); 
的研制成功回调函数中

,也请务必登录看看阉执行的研制成功功能或不

console.log("success") 

您创建的本地变量成功与选项成功无关,它总是会是错误的。

2

ajax中的第一个a表示异步,表示成功回调被调出正常流程,因此在if(success)声明之后。你应该把window.open("changeuserjudge.php");放在成功回调中。