2012-03-29 9 views
3

zu senden Ich arbeite derzeit an einem Formular, mit dem der Benutzer ihr Kennwort ändern kann. Und ich bin nicht sehr gut mit jQuery ajax. Der Ajax scheint die Daten nicht an changepassword.php zu senden. Die PHP-Datei funktioniert gut, wenn ich keinen Ajax verwende. Kannst du mir ein bisschen helfen?Mit jQuerys Methode .ajax(), um ein Formular in PHP

Ich aktualisierte meine Dateien nach einigen der Kommentare. Wenn ich versuche, das Formular zu senden, gibt es Doesn't Work zurück. Also ich denke, der PHP reagiert, aber der Wert wurde nicht in die Datenbank.

Vielen Dank für die Hilfe Jungs.

Im Anschluss an die Form und Ajax (Aktualisiert)

 <form id="form_id" method="POST"> 
      <label for="username">Username</label> 
      <input type="text" name="username" id="username" required /> 
      <label for="old_password">Old Password</label> 
      <input type="password" name="old_password" id="old_password" required /> 
      <label for="new_password">New Password</label> 
      <input type="password" name="new_password" id="new_password" required /> 
      <button class="submit"> 
       Submit 
      </button> 
      <p class="result"></p> 
     </form> 
     <script> 
      $.ajaxSetup({ 
       cache : false 
      }); 
      $(".submit").click(function(e) { 
       $.ajax({ 
        url : "changepassword.php", 
        type : "POST", 
        data : $("#form_id").serialize(), 
        success : function(data) { 
         if(data == 1) { 
          $(".result").html("Works"); 
         } else { 
          $(".result").html("Doesn't Work"); 
         } 
        } 
       }); 
       return false; 
      }); 

     </script> 

Und das ist changepassword.php (Aktualisiert)

<?php 
session_start(); 
ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(-1); 
include_once "../classes/Connect.php"; 
$connection = new Connect(); 
$username = $_POST['username']; 
$old_password = $_POST['old_password']; 
$new_password = $_POST['new_password']; 
$result = $connection -> change_password($username, $old_password, $new_password); 
if ($result) { 
    echo 1; 
} 
    ?> 

Dies ist die Methode change_password() aus connect.php Klassendatei

function change_password($username, $old_password, $new_password){ 
    $query = "UPDATE Account SET password = ? WHERE username = ? AND password = ?"; 
    if ($stmt = $this -> conn -> prepare($query)){ 
     $stmt -> bind_param('sss', md5($new_password), $username, md5($old_password)); 
     if ($stmt -> execute()){ 
      return true; 
     } 
    } 
} 
+0

Erhalten Sie einen Fehler bei Firebug? Werden Sie wachsam als "Works"? –

+0

Echo $ Benutzername oder was auch immer in Ihrer PHP-Datei dann Alarm (Daten); stattdessen um zu sehen, ob es richtig auf den php übergeht. – mikevoermans

+0

Ich die Warnung "Works" wird nicht angezeigt. Ich habe versucht, $ username in PHP-Datei zu echo, aber es geht nicht zurück zu Ajax. Und ich weiß nicht, wie man Firebug verwendet – lusketeer

Antwort

1

Ist Ihre Anfrage an den Server erfolgreich? Weil ich nicht sicher bin, aber wenn die gesamte Anfrage fehlschlägt, dann haben Sie keinen Erfolg und jquery ajax (wahrscheinlich) wird nach der Fehlerfunktion suchen, aber Sie haben es nicht bereitgestellt - also passiert nichts.

Über die Einstellung Ihrer Ajax-Daten-Eigenschaft können Sie wahrscheinlich tun data: $('#form_id').serialize() und thid = s wird richtige Zeichenfolge für die Anfrage erstellen - var1 = Wert1 & var2 = Wert2, aber mit weniger Code.

Wenn es ein Problem in der PHP-Datei nach session_start(); ist der folgende Code eingefügt geben Ihnen einen Hinweis, was schief gehen ist:

ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(-1); 

Wünsche Ihnen viel Glück. Ivelin

+0

Ich habe das getan. Und ich habe der Form auch eine ID gegeben. Aber es funktioniert immer noch nicht. Trotzdem danke. – lusketeer

+0

In Ihrem Fall bedeutet "funktioniert nicht", dass Anfrage erfolgreich an das Skript gesendet wurde, aber etwas in MySQL Anfrage oder Logik schief geht. Wenn Sie das Ergebnis der Abfrage mit http://php.net/manual/en/function.mysql-affecte-rows.php überprüfen können – h4cky

Verwandte Themen