所以我试图学习一些用于访问mysql数据库的表单中的jquery,这里是表单:
<form class="loginform" id="loginform" name="loginform">
<input type="email" id="login" name="login" placeholder="Login..." autofocus required /><br/>
<input type="password" id="password" name="password" placeholder="Password..." required /><br/>
<input type="submit" id="loginsubmit" name="loginsubmit" value="LOGIN"/><br/>
<input type="submit" id="register" name="register" value="REGISTER"/><br/>
</form><!-- end loginform -->
我有一个JS函数并使用$.submit()
函数,并通过定义为$.submit()
参数的函数调用$.ajax()
,如下所示:
function validateLogin(){
$('#loginform').submit(function() {
$.ajax({
url: "./validateLogin.php",
processData: false,
data: {
login: $("#login").val(),
password: $("#password").val()
},
success: function (result){
alert($('#login').val());
alert(result);
}
});
});
}
注意读取processData: false,
的行
最后这里是url设置中$.ajax()
方法调用的php脚本:
<?php
$verified = FALSE;
$login = $_POST["login"];
$password = $_POST["password"];
$con = mysql_connect(host, user, pass) or die(mysql_error());
mysql_select_db(db, $con) or die(mysql_error());
$result = mysql_query("SELECT * FROM logins") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
if ($row[login] == $login) {
$verified = TRUE;
}
}
?>
<html>
<body>
<?php echo($verified); ?>
</body>
</html>
有些东西不起作用,除了将表单数据附加到url之外我无法做任何事情(在提交后,url看起来会像这样:http://localhost/index.htmlqlogin=aloginname&password=apassword&login=LOGIN
,它是还会因为某种原因将我的提交按钮的名称:值对添加到查询字符串中,并且我从阅读HERE (see the data setting)了解到processData: false
这个甚至不应该发生。
此外,我无法让success: function()
触发警报(我也尝试在beforeSend: function()
中发出警报,但也不会触发。
我有点理解jQuery但不完全是我对它相对较新,但我对我编写的代码的理解是在JS函数中我将一个事件处理程序附加到表单(? - not表单的一个元素,并且在该事件处理程序将执行的函数中,我正在调用$.ajax()
方法,该方法将数据发送到url并成功完成该处理中定义的函数success:
方法的$.ajax()
设置。然后在我的php脚本中我连接到mysql,查询它,检查表单中的登录是否与db中的条目匹配,如果它确实将布尔值更改为true,最后布尔值的值在内部回显<html>
标记,但我不确定如何显示该html数据。
简而言之,这就是我的问题。任何指导将不胜感激! 如果我误解了上述过程的任何内容,请随时纠正我。再次感谢。
答案 0 :(得分:0)
有几点需要注意。
1-确保路径 ./ validateLogin.php 是正确的。
2-我不知道你是否已经这样做了,但如果你不使用Firebug,那么在开发网站时,最酷的插件就是用来调试的。它将为您节省数小时的工作量并帮助您解决涉及javascript的错误。
3- ajax最常见的用途是发布或带来数据。任一简单的字符串,如 “完成” 或 “错误”,或串行化的数据等的 JSON 。(参见<强> JSON < /强>)。如果需要输出数组或对象,请在PHP中使用 json_encode 函数。
以下是一些代码供您试用,它对我有用。
在PHP方面
$result = mysql_query("SELECT * FROM logins") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
if ($row[login] == $login) {
$verified = TRUE;
}
}
if ($verified){
echo 'TRUE'; // This could be anything you want, an array, an object, numbers or a string
}else{
echo 'FALSE';
}
在Javascript方面
$(document).ready(function(){ // Everything is encapsuled in the ready function in order to wait for the page to load completely.
$.ajax({
url: './validateLogin.php',
type: 'POST',
success: function(result){
if(result == 'TRUE'){
alert('Verified!');
}else{
alert('Not verified!');
}
}
});
});
我知道你也试图输出和标签,但请记住,javascript和ajax意味着平滑地改变存在布局。所以你真的不想在你的请求中带来大量的HTML代码。您应首先使用HTML和PHP准备布局,然后仅使用javascript和ajax来提供您需要动态更改的重要数据或内容。
答案 1 :(得分:0)
//hey try to use this server side php script
$logins = $_POST['login'];
$password = $_POST['password'];
$sqlquery = mysql_query("SELECT * FROM logins WHERE logins=$logins AND password=$password");
$numrow = mysql_num_rows($sqlquery);//check if exists or not
if($numrow > 0){
$verified = "TRUE";
}
else{
$verified = "FALSE";
}
echo json_encode(array('verified'=>$verified));// echo out with json encode
//JS
$(document).ready(function(){
$("#loginbtn").click(function(){
$.ajax({
type:'post',
url:'validatelogin.php',
data: {login: $("#login").val(), password: $("#password").val()},
dataType:'json',
success:function(data){
alert(data.verified);
}
});
});
});