2012-03-29 11 views
3

私は現在、ユーザーがパスワードを変更できるフォームを作成中です。そして、私はjQuery ajaxにはあまりよくありません。 ajaxはchangepassword.phpにデータを送信していないようです。私はajaxを使用しない場合、PHPファイルは正常に動作します。みんなここで少し助けてくれますか?jQueryのメソッド.ajax()を使用してPHPでフォームを送信する

いくつかのコメントに従ってファイルを更新しました。フォームを送信しようとすると、Doesn't Workが返されます。だから私はPHPが応答していると思うが、値はデータベースに取得していない。

ありがとうございました。フォームとAjax(更新)

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

であり、これはchangepassword.phpが続き

(更新)

<?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; 
} 
    ?> 

これはメソッドchange_password()あるconnect.phpクラスファイルから

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

火元爆弾でエラーが発生しましたか?あなたは「作品」として警告を受けますか? –

+0

echo $ usernameまたはあなたのPHPファイルの中に何でも警告(データ); phpに正しく渡されているかどうかを確認する必要があります。 – mikevoermans

+0

私は「Works」という警告が表示されません。私はphpファイルに$ usernameをエコーし​​ようとしましたが、それはajaxに返されません。そして、私は火かき棒の使い方をあまり知らない。 – lusketeer

答えて

1

サーバーへのリクエストは成功していますか?私は確信が持てませんが、要求全体が失敗した場合は成功しないし、jQuery ajax(おそらく)はエラー関数を探しますが、あなたはそれを提供しませんでした。

おそらくあなたはdata: $('#form_id').serialize()を実行し、thid = sはrequest-var1 = value1 & var2 = value2の適切な文字列を作成しますが、コードは少なくなります。あなたは間違って何が起こっているかのヒントを与える次のコードを挿入しsession_start();した後、あなたのPHPファイルに問題がある場合は

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

はあなたに幸運を願っています。 Ivelin

+0

私はそれをしました。そして、私もフォームにIDを渡した。しかし、まだ動作していません。とにかく、ありがとう。 – lusketeer

+0

あなたのケースでは、「うまくいかない」とは、リクエストがスクリプトに送信されたが、mysqlリクエストまたはロジックの何かが間違っていることを意味します。クエリの結果をhttp://php.net/manual/en/function.mysql-affected-rows.phpで確認できれば – h4cky

関連する問題