0

Bootstrap 署名フォームを使用しており、次のコードを使用しています。

 $.ajax({
   type: "POST",
   url: 'process/register.php',
   data: $(this).serialize(),
   dataType: "html",
   success: function(msg){
    alert('23');
   },
   error: function(error) {
     console.log("an error", error);
    }
 });

それでも何も起こりません。フォームは機能し、データベースには新しい追加がありますが、コールバックは実行されません。

要求どおり、これはregister.phpコードです:

$email = $_POST['Email_address'];
$pword = $_POST['Password'];

$pword = md5($pword);

$result = $db->query("INSERT INTO users (`name`,`password`) VALUES ('" . $email . "','" . $pword . "')");
if($result != FALSE){
    echo "true";
} else {
    echo "false";
}
echo "!!!!!!!!!!";

役立つ場合は、HTML フォーム コードを次に示します。

  <form class="form-signin" method="post" enctype="multipart/form-data" action="" id="regForm">
    <h2 class="form-signin-heading" style="width:500px;">Register</h2>
    <input type="text" class="form-control" placeholder="Email address" name="Email_address" id="Email_address" autofocus required>
    <input type="password" class="form-control" placeholder="Password" name="Password" id="Password" required><br>
    <button class="btn btn-lg btn-primary btn-block" type="submit" id="regSubmit">Register</button>
  </form>
4

3 に答える 3

0

JavaScript を次のように変更します。

 $.ajax({
   type: "POST",
   url: 'process/register.php',
   data: $(this).serialize(),
   dataType: "html",
   async:false,
   success: function(msg){
    alert('23');
   },
   error: function(error) {
     console.log("an error", error);
    }
 });

解決しました。(行を追加async:false)。それでもリフレッシュできました。本当の問題は、ページが更新されたことであることが判明しました (async:trueコールバックが実行される前にページが更新されたと思います。変更すると、コールバックが最初に実行されます)。したがって、これで解決し、async:false必要ありません。

$("#regForm").submit(function () {
     $.ajax({
           type: "POST",
           url: 'process/register.php',
           data: $(this).serialize(),
           dataType: "html",
           success: function(msg){
                alert('23');
           },
           error: function(error) {
                console.log("an error", error);
           }
     });
     return false;
});

return false(送信機能の最後に追加)。

于 2013-10-19T22:51:07.547 に答える
-1

私はecho 'any string';あなたのphpでいいえをしていないと思いますか? function(msg)成功した場合は echo 1 ( db に追加) または echo 0 (挿入に失敗した場合) であっても、見返りが期待されます。

したがって、成功ハンドラーで行うことができます(注:phpに接続されたajaxと戻り値をexpextsします)=成功

success: function(msg) {
    if(msg == 'success') { 
        alert('yay'); 
    }
    else { 
        alert('fail');
    }
}
于 2013-10-19T22:26:47.713 に答える