2016-07-16 2 views
1

Ich arbeite mit Ajax und PHP. Ich möchte die Nachricht auf einer anderen Seite anzeigen, nachdem der Benutzer erfolgreich mit Ajax hinzugefügt wurde. Ich habe so viel versucht. Es funktioniert, wenn zuerst die Meldung "Erfolg" im Popup angezeigt wird und dann auf einer anderen Seite umgeleitet wird. Aber ich möchte zuerst auf einer anderen Seite und nach der Display-Nachricht umleiten.Ajax Redirect auf der neuen Seite und nach der Anzeige Erfolgsmeldung

Benutzer hinzufügen Seite:

<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 in Validate

$("#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; ?>"; 
         }); 
        } 
       } 
      }); 
     } 
}); 

Aktion

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; 
} 
+0

geben Sie 1 an if if (response == '1') {} – JYoThI

+0

Das sollte keinen Unterschied machen, da er einen losen '== 'Vergleich verwendet. – BeetleJuice

+0

@jothi es funktioniert nicht wie wenn (response == '1') {}. Eigentlich möchte ich Erfolgsmeldung auf einer anderen Seite anzeigen. Mit dieser Umleitung auf einer anderen Seite ist es okie. Aber keine Erfolgsmeldung anzeigen. –

Antwort

1

Der Erfolg po pup erscheint, bevor der Benutzer aufgrund des folgenden Code umgeleitet wird:

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

Wenn Sie eine Nachricht auf der neuen Seite, anstatt zeigen wollen, leiten nur der Benutzer

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

Auf die neue Seite wo Sie den Kunden nach dem Erfolg senden, zeigen die Nachricht mit so etwas wie

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

Ich habe die Sitzung auf einer anderen Seite eingerichtet, zeige aber immer noch keine Erfolgsmeldung von der Sitzung an. –

+0

Vielen Dank –

1

Sie können prüfen, ob es eineisteingestellt auf der Seite, auf die Sie es richten, wenn diese eingestellt ist, dann alert.

JQuery:

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

Dann $user_list Seite:

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

Hinweis, ich bin die einfachen Anführungszeichen verwendet, so dass PHP nicht glaubt $ eine Variable ist.

+0

Vielen Dank. –

Verwandte Themen