Я пытаюсь проверить, существует ли имя пользователя в моей базе данных mysql, и, если это так, php-сторона делает эту проверку и возвращает эхо-сообщение «duplicate», которое затем должно быть получено ajax. Однако он не получает, и когда я пытаюсь выполнить вывод в своих инструментах для разработчиков, я получаю это значение переднего конца как неопределенное.не удается получить данные из php с помощью jquery ajax
Вот мой JQuery Ajax часть: -
$("#create").click(function(e){
e.preventDefault();
$.ajax({
type:'post',
url:'usernameTest.php',
data: {usr: $("#usr").val(),
pwd: CryptoJS.MD5($("#pwd").val()).toString()
},
success: function(data){
//console.log(data);
if(data == "duplicate"){
$("#userErrorDiv").html("User already exists. Please enter another one").css("color","red");
console.log("duplicate data");
}
else{
console.log("data not duplicate:"+data);
}
},
error(err){
console.log("error "+err);
}
});
Вот PHP часть: -
<?php
function recieveFormData()
{
if (isset($_POST['usr'], $_POST['pwd'])) {
global $connection;
global $username;
global $password;
$username = $_POST['usr'];
$password = $_POST['pwd'];
}
}
/*do insertion if username not found */
function insertIntoTable($username, $password){
global $connection;
$query="INSERT INTO users(username, password) VALUES('$username','$password')";
$result=mysqli_query($connection,$query);
if(!$result){
die("Sorry. Query failed to execute ".mysqli_error());
}
}
function connectToDatabase(){
global $connection,$username;
$connection=mysqli_connect("localhost","root","","usermanagement");
if(!$connection){
echo "Sorry! Cannot connect to the database";
}
}
function readFromDatabase(){
global $connection,$username;
$query="SELECT * from users where username='$username'";
$result=mysqli_query($connection,$query);
if(!$result){
die("query error");
}
if(mysqli_num_rows($result)!=0) {
echo "duplicate";
//return false;
}
else{
while($row = mysqli_fetch_assoc($result)) {
$usernameFromTable=$row['username'];
// print_r($usernameFromTable);
echo "<tr><td>".$usernameFromTable."</td><td>User</td><td></td></tr>";
}
}
//return true;
}
recieveFormData();
connectToDatabase();
readFromDatabase();
?>
И это простой HTML им с помощью: -
<label for="usr">Username</label>
<input type="text" name="usr" id="usr">
<label for="pwd">Password</label>
<input type="password" name="pwd" id="pwd">
<button id="create" class="create" type="submit" name="create">Create</button>
<div id="userErrorDiv"></div>
[. Ваш скрипт находится в опасности для SQL Injection атак] (HTTP: //stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Узнайте о [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) утверждениях [для PDO ] (http://php.net/manual/en/pdo.prepared-statements.php) и [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и подумайте об использовании PDO, [это действительно не сложно] (http://jayblanchard.net/demystifying_php_pdo.html). –
Вы действительно должны использовать встроенные функции PHP (http://jayblanchard.net/proper_password_hashing_with_PHP.html) для защиты паролей. Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). –
Вы просматривали запрос/ответ в консоли браузера? –