2016-11-27 107 views
0

這是我第一次使用AJAX。我試圖將數據從HTML表單寫入到phpmyadmin數據庫。我正在使用jQuery進行AJAX調用。我懷疑,因爲我已經包括一個Javascript alertechoregisterUser.php文件的頂部,當我嘗試運行這段代碼,所以PHP甚至沒有運行就不會出現有什麼東西錯了jQuery。瀏覽器中沒有Javascript錯誤。我感謝你的洞察力。AJAX通過jQuery和PHP發佈文章

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文件的頂部JavaScript警告回聲,當我試圖運行這個code'這是可以預料它不會出現 - AJAX請求在服務器上運行。您放入端點的JS代碼將被忽略。爲了幫助我們,我們需要看到兩件事情 - 運行AJAX請求時控制檯的輸出,以及registerUser.php中的PHP代碼 –

+0

還要注意您要發送兩次相同的屬性 - 「registerPassword」。因此,從$('#registerPassword')。val()'中的第一個將被覆蓋。 –

+0

你可以請張貼你的PHP代碼一件事,你指向正確的網址? – 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代碼中調用。

注意:在您的PHP代碼中添加try{ }catch(){},以調試指令並在alert中顯示響應,如上面的代碼所示。

希望這會有所幫助。

+0

奇怪的是,它返回「成功」。但是,數據庫仍然沒有數據。必須是PHP內的東西。 –

+0

因此,嘗試添加一個嘗試並捕獲到您的PHP代碼進行調試,並確保那裏真正發生了什麼。 –

+0

檢查我的更新,我建議在回調中調用你的js函數。 –