我正在使用JQUERY,AJAX和PHP来确定用户是否已经存在,然后2)如果用户尚不存在则添加用户。我决定尝试这种方式的方法是使用AJAX来运行确定用户是否存在的PHP脚本。如果查询返回false,则AJAX函数运行另一个 AJAX函数,该函数运行PHP脚本以添加用户。
我知道"成功:" AJAX函数的一部分可以工作,因为我最初生成的警报显示了查询的结果。问题是当我尝试将第二个AJAX功能放入"成功:"区域,以便在用户不存在时添加用户。
我感觉这样必须与我的" INSERT"的查询语法有关,但看起来对我来说。我已经搜索了以下几页,以确保:
http://www.w3schools.com/sql/sql_insert.asp http://www.w3schools.com/php/php_mysql_insert.asp
不用多说,这是我的代码。
HTML
<div id="btnRegister" class="btnRegisterInitial btnRaised trans500ms" style="z-index:3;">
<input id="email" class="txtInitial txtEmail trans500ms" style="font-family:arial; font-size:18px; color:#433343;" type="email" name="" value="" placeholder="">
<input id="password" class="txtInitial txtPassword trans500ms" style="font-family:arial; font-size:18px; color:#433343;" type="password" name="" value="" placeholder="">
JQUERY / AJAX:
$("#btnRegister").click(
function() {
validateUserInput(); // PLACES VALUE IN INVISIBLE INPUT IF USER INPUT IS VALID
if ($("#inputValid").val()) {
// alert("user's input is valid. User wants to register.");
$("#inputValid").val("");
$.ajax({ // AJAX TO CHECK IF USER EXISTS
url: 'UserExists.php',
type: 'post',
dataType: 'json',
data: {email: $('#email').val(), password: $('#password').val()},
success: function(data) {
if (data) { // IF RESULT OF QUERY HAS A VALUE (IT WILL IF EMAIL INPUT WAS FOUND IN DB)
alert("you exist");
} else {
alert("so, you new here?");
$.ajax({ // AJAX TO ADD USER IF USER DOESN'T ALREADY EXIST
url: 'Register.php',
type: 'post',
dataType: 'json',
data: {email: $('#email').val(), password: $('#password').val()},
success: function(data) {}
});
}
}
});
}
});
UserExists.PHP:
<?php
// SET DATABASE LINK AS A VARIABLE THAT CAN BE USED WHEN RUNNING QUERIES
$link = mysqli_connect(...db stuff...);
if (mysqli_connect_error()) { // AVOIDS ECHOING TOO MUCH SENSITIVE INFO ABOUT DATABASE ON ERROR
die("Could not connect");
}
$uiemail = mysqli_real_escape_string($link, $_POST['email']); //CREATE VARIABLE RATHER THAN WORRYING ABOUT QUOTES IN QUERY
$uipassword = mysqli_real_escape_string($link, $_POST['password']);
// SELECT all fields FROM databasename
$query = "SELECT * FROM users WHERE email='$uiemail'"; //SIMPLIFIES BY USING VARIABLE RATHER THAN WORRYING ABOUT STUPID QUOTES
// CREATE ARRAY CONTAINING ALL VALUES FOR ROW MATCHING QUERY CRITERIA
$row = mysqli_fetch_array(mysqli_query($link, $query));
$name = $row['name'];
$error = 'I could not find that user name';
if($row){
echo json_encode($name);
} else {
echo json_encode("");
}
?>
Register.PHP
<?php
$link = mysqli_connect("localhost", "web205-example", "qfz!ghWHd", "web205-example");
if (mysqli_connect_error()) {
die("Could not connect");
}
$uiemail = mysqli_real_escape_string($link, $_POST['email']); //CREATE VARIABLE RATHER THAN WORRYING ABOUT QUOTES IN QUERY
$uipassword = mysqli_real_escape_string($link, $_POST['password']);
// ENTERS NEW USER INTO TABLE
$query = "INSERT INTO `users` (`email`, `password`) VALUES ($uiemail, $uipassword)";
mysqli_query($link, $query);
?>
是的,我知道我以非传统的方式做形式的东西。这就是我想要尝试的方式。我认为问题必须在于我的AJAX或我的PHP查询。
我试图包含大部分代码。如果您需要我通过仅包含我认为重要的代码来简化,请告诉我。
谢谢!
答案 0 :(得分:0)
感谢您的投入。我不是确切地确定问题是什么,但我在玩了 JQUERY / AJAX:部分(如上所示)后开始工作。以下是我所做的事情,最终让它发挥作用:
然后它开始工作了。所以,虽然我还没有验证我的理论,但我90%肯定如果你真的要检查上面的 JQUERY / AJAX:部分,你会发现卷曲存在问题括号或括号(这可能是一个很难发现的问题)。所以我想我的教训是:如果您正在复制粘贴代码,请仔细检查括号/括号。
所以我只想发布这个,以便任何看到这个的人知道它是如何修复的。
感谢大家的投入。