2016-11-27 37 views
0

これは初めてAJAXを使用しています。 HTMLフォームからphpmyadminデータベースにデータを書き込もうとしています。私は、AJAX呼び出しのためにjQueryを使用しています。私はをのファイルに含めて、registerUser.phpファイルの先頭にJavascriptを含めていますので、このコードを実行しようとすると表示されないので、PHPが実行されていないため、jQueryに何か問題があると思われます。ブラウザにJavascriptエラーはありません。私はあなたの洞察に感謝します。jQueryとPHPによるAJAX投稿

function registerUserViaAjax() { 
    $.ajax({ 
    type: "POST", 
    url: "registerUser.php", 
    data: { 
     registerUsername: $('#registerUsername').val(),   
     registerPassword: $('#registerPassword').val(), 
     registerPassword: $('#registerEmail').val() 
    } 
    }) 
} 
<label>Username</label> 
<input class="w3-input" type="text" id="registerUsername"> 

<label>Password</label> 
<input class="w3-input" type="password" id="registerPassword"> 

<label>Confirm Password</label> 
<input class="w3-input" type="password" id="registerConfirmPassword"> 

<label>Email Address</label> 
<input class="w3-input" type="text" id="registerEmail"> 

<button class="w3-btn w3-green" style="margin-top:3%;margin-bottom:3%" id="registerButton" onclick="registerUserViaAjax()">Go</button> 
<?php 
    $host = 'localhost'; 
    $user = 'root'; 
    $pw = ''; 
    $db = 'fall2167'; 

    $dbc = mysqli_connect($host, $user, $pw, $db) 
     or die('LOCAL CONNECT ERROR: '. mysqli_connect_error()); 

    $uname = mysqli_real_escape_string($dbc, $_POST['registerUsername']); 
    $pword = mysqli_real_escape_string($dbc, $_POST['registerPassword']); 
    $pword = password_hash($pword, PASSWORD_DEFAULT); 

    $email = mysqli_real_escape_string($dbc, $_POST['registerEmail']); 

    $check = mysqli_query($dbc, "select id from hw6 where uname = '$uname'") 
     or die('confirm6 read error: ' . mysqli_error($dbc)); 

    if (mysqli_num_rows($check) != 0) 
    { 
     echo "<script> usernameTaken(); </script>"; 
     exit; 
    } 

    $query = "insert into users(uname, pword, email)" . "values('$uname','$pword','$email')"; 
    $result = mysqli_query($dbc, $query) 
     or die('DB Write Error: ' . mysqli_error($dbc)); 

    echo "<script> openSuccessMessage(); </script>"; 
    mysqli_close($dbc); 
?> 
+0

'registerUser.phpファイルの一番上にechoというJavascriptアラートが含まれています。このコードを実行しようとすると表示されません。これは予想されます.AJAXリクエストはサーバー上で実行されます。エンドポイントに置いたJSコードは無視されます。 AJAXリクエストを実行したときのコンソールの出力と、registerUser.phpのPHPコードの2つを参照する必要があります。 –

+0

「registerPassword」という同じプロパティを2回送信していることにも注意してください。このため、最初のものは '$( '#registerPassword').val()'から上書きされます。 –

+0

もう1つPHPコードを投稿してください。正しいURLを指していますか? – Amir

答えて

1

あなたは何が起こると何があなたが戻って、サーバ側から取得している応答であることを確認するdonefailコールバックを使用する必要があります。

$.ajax({ 
    type: "POST", 
    url: "registerUser.php", 
    data: {registerUsername: $('#registerUsername').val(), registerPassword: $('#registerPassword').val(), registerPassword: $('#registerEmail').val() }, 
}) 
    .done(function(response) { 
    alert(response); 

    //call you function 'openSuccessMessage' here 
    openSuccessMessage(); 
}) 
    .fail(function(response) { 
    alert(response); 
}); 

あなたopenSuccessMessageべきコールバックで呼び出され、PHPコード内では呼び出されません。

注:try{ }catch(){}をPHPコードに追加すると、指示をデバッグし、上記のコードに示すように警告を表示することができます。

これが役に立ちます。

+0

奇妙なことに、それは "成功"を返しました。しかし、DBにはまだデータはありません。 PHP内の何かでなければなりません。 –

+0

それで、tryとcatchをあなたのPHPコードに追加してデバッグし、実際に何が起こっているか確認してください。 –

+0

私のアップデートをチェックして、コールバック内でjs関数を呼び出すことをお勧めします。 –

関連する問題