Ajax重定向在新页面和显示成功消息之后

时间:2016-07-16 11:20:26

标签: php html ajax jquery-validate

我正在使用ajax和php。用户使用Ajax成功添加后,我想在另一页面上显示消息。我已经尝试过这么多。当首次在弹出窗口显示“成功”消息并在另一页面上重定向时,它正在工作。但我想首先重定向另一个页面,然后显示消息。

用户添加页面

<form action="<?php echo $action_link; ?>" method="post" id="form_user_profile" class="form-horizontal" novalidate="novalidate">

   <input type="hidden" id="id" name="id" value="<?php echo $id; ?>">

   <div class="form-body">
     <div class="form-group">
       <label class="control-label col-md-3">First Name
         <span class="required" aria-required="true"> * </span>
       </label>
       <div class="col-md-4">
         <div class="input-icon right">
           <i class="fa"></i>
           <input type="text" class="form-control" name="fname" value="<?php echo $user_db[0]['fname']; ?>"> 
         </div>
       </div>
     </div>
     <div class="form-actions">
       <div class="row">
         <div class="col-md-offset-3 col-md-9">
           <input type="submit" class="btn green" name="submit" value="<?php echo $addupdate_msg; ?>">
         </div>
       </div>
     </div>
</form>

验证中的Ajax

$("#form_user_profile").validate({
        rules: {
            fname: {
                required: true
            }
        },
        messages: {
            fname: "Please enter first name"
        },
        submitHandler: function(form) {
            $.ajax({
                url: form.action,
                type: form.method,
                data: $(form).serialize(),
                success: function(response) {
                    if(response == 1){
                        bootbox.alert("User has been added successfully.", function() {
                            window.location.href= "<?php echo $user_list; ?>";
                        });
                    }
                }
            });
        }
});

动作

if (isset($_REQUEST['submit']) && $_REQUEST['submit'] == "Add") {

    $fname = mysqli_real_escape_string($obj->CONN, $_REQUEST['fname']);    

    $user->setfname($fname);
    $insert = $user->insert();

    ob_get_clean();

    if($insert){
        echo '1';
        $_SESSION['msg'] = "New user has been added successfully.";
    }else{
        echo '0';
    }

    exit;
}

2 个答案:

答案 0 :(得分:1)

由于以下代码,在重定向用户之前会显示成功弹出窗口:

if(response == 1){
    bootbox.alert("User has been added successfully.", function() {
        window.location.href= "<?php echo $user_list; ?>";
    });
}

如果您希望在新页面上显示消息,只需重定向用户

if(response == 1)window.location.href= "<?php echo $user_list; ?>";

新页面成功发送客户的位置,显示消息

$(function() {
    bootbox.alert(<?= $_SESSION['msg'] ?>);
});

答案 1 :(得分:1)

您可以检查您指定的网页上是否设置了$_SESSION['msg'],如果设置为alert

Jquery的:

if(response == 1){window.location.href= "<?php echo $user_list ?>";}

然后,$user_list页面:

if(isset($_SESSION['msg'])){
  echo '$(document).ready(function(){
            bootbox.alert('.$_SESSION['msg'].');
        })';
}

请注意,我使用单引号,因此PHP认为$不是变量。