0

所以我正在尝试学习一些 jquery 以在表单中使用来访问 mysql 数据库,这是表单:

<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);
      }
    });
  });
}

注意读取的行,最后是url 设置中processData: false, 的方法调用的 php 脚本:$.ajax()

<?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,它还添加了 name: 值对出于某种原因,我将提交按钮提交给查询字符串),我从阅读HERE(请参阅数据设置)中了解到,processData: false这种情况甚至不应该发生。

我也无法success: function()触发警报(我也尝试过发出警报,beforeSend: function()但也不会触发。

我有点理解 jQuery,但并不完全是因为我对它比较陌生,但我对我编写的代码的理解是,在 JS 函数中,我将事件处理程序附加到表单(? - 不是表单),并且在该事件处理程序将执行的函数中,我正在调用该$.ajax()方法,该方法将数据发送到 url 并在成功完成该处理时处理方法success:设置中定义的函数$.ajax()。然后在我的 php 脚本中,我连接到 mysql,查询它,检查表单中的登录是否与数据库中的条目匹配,如果匹配,则布尔值更改为 true,最后布尔值在内部回显<html>标记,但是我不确定如何显示该 html 数据。

简而言之,这就是我的问题。任何指导将不胜感激!如果我对上述过程有任何误解,请随时纠正我。再次感谢。

4

2 回答 2

0

有几点需要说明。

1-确保路径./validateLogin.php是正确的。

2- 我不知道你是否已经这样做了,但如果你不使用Firebug,这是开发网站时最酷的调试插件。从字面上看,它将为您节省数小时的工作时间,并帮助您解决涉及 javascript 的错误。

3- ajax 最常见的用途是发布或带来数据。可以是像“ done ”或“ error ”这样的简单字符串,也可以是像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!');                             
            }

        }
    });
});

我知道您也尝试输出 and 标记,但请记住 javascript 和 ajax 旨在平滑更改现有布局。所以你真的不想在你的请求中带来大量的 HTML 代码。您应该首先使用 HTML 和 PHP 准备布局,然后仅使用 javascript 和 ajax 来带来重要的数据或您需要即时更改的内容。

于 2012-06-04T00:59:39.183 回答
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);
      }
});     
});

});
于 2012-06-07T09:35:32.083 回答