0

我正在尝试使用 PHP 和 MySQL 创建一个简单的登录,并且我正在使用 AJAX() jquery 函数来加载 PHP 脚本。我要做的就是在脚本在我的数据库中找到用户时加载一个新的网页(例如 java2s.com)。问题是脚本根本不起作用。这是带有 Jquery 的 HTML:

编辑:感谢所有评论的人,这是固定代码,遗憾的是仍然不起作用。

<!DOCTYPE HTML>
<html>
<head>
<title> Login </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script language="JavaScript">
function change()
{
document.location.href="http://www.java2s.com";
}

$(document).ready(
$("#loginForm").click(function() {
var jsonlogin=new Object();
jsonlogin.username=$('#username').val();
jsonlogin.password=$('#password').val();
var sendstr = JSON.stringify(jsonlogin);
$.ajax({
        type: 'POST',
        url: 'login.php',
        async: false,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        data: sendstr,
        success:function(response){
        if (response['result']=="login successful")
            {
            change();
            }
        }
    });

    })
  )
</script>
</head>
<body>
<h1> INSERT USERNAME AND PASSWORD</h1>
<input type="text" id="username" name="username"> USERNAME <br>
<input type="password" id="password" name="password"> PASSWORD <br>
<input type="submit" id="loginForm" class="button positive">
</body>
</html>

PHP 脚本非常简单:

<?php
$data = file_get_contents('php://input');
$result = json_decode($data);
$con=mysqli_connect("localhost","****","*****","*******");
$str="SELECT ID FROM users WHERE username='".$result->username."' AND password='".$result->password."';";
$exists = mysqli_query($con,$str);
if (mysqli_num_rows($exists) ==1)
{
    $arr = array('result'=>"login successful");
    $ris=json_encode($arr);
    echo $ris;
}
else
{
    $arr= array('result'=>"login error");
    $ris=json_encode($arr);
    echo $ris;
}
mysqli_close($con)
?>

当我加载页面并按下提交按钮时,什么都不会发生。任何人都可以帮忙吗?非常感谢您提前

4

5 回答 5

1

尝试这样的事情

$("#loginForm").click(function() {
    var jsonlogin=new Object();
    jsonlogin.username=$('#username').val();
    jsonlogin.password=$('#password').val();
    $.ajax({
        type: 'POST',
        url: 'login.php',
        async: false,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        data: jsonlogin,
        success:function(response){
            if (response['result']=="login successful")
            {
                change();
            }
        }
    });
})

编辑代码

您没有正确实现 DOM 就绪方法

    $(document).ready(function(){
        // code goes here
    });
于 2013-11-08T12:07:36.757 回答
0

在 login.php 中尝试这个查询,

     $str="SELECT ID FROM users WHERE username='".$result->username."' AND password='".$result->password."' "; 

查询:

           $(document).ready(function(){
            $("#loginForm").click(function() {
                var jsonlogin=new Object();
                jsonlogin.username=$('#username').val();
                jsonlogin.password=$('#password').val();
                var sendstr = JSON.stringify(jsonlogin);
                $.ajax({
                        type: 'POST',
                        url: 'login.php',
                        async: false,                         
                        dataType: 'json',
                        data: sendstr,
                        success:function(response){
                        if (response.result=="login successful")
                            {
                             change();
                            }else{
                                alert(response.result);
                                return false;
                            }   
                        }
                    });

                 });
        });
于 2013-11-08T12:39:40.423 回答
0

也许是因为所有的 php 都被注释掉了?

同样在您的成功功能中应该如下所示:

success: function(response){
    dosomethingwithrespones(response);
}

$.ajax 中的数据表示您发送的内容。

于 2013-11-08T11:57:26.860 回答
0

您错过了结束 { 和 } 准备好的功能。试试下面的代码。

<!DOCTYPE HTML>
<html>
<head>
<title> Login </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script language="JavaScript">
function change()
{
document.location.href="http://www.java2s.com";
}

$(document).ready(function () {
$("#loginForm").click(function() {
alert("hi");
var jsonlogin=new Object();
jsonlogin.username=$('#username').val();
jsonlogin.password=$('#password').val();
var sendstr = JSON.stringify(jsonlogin);
$.ajax({
        type: 'POST',
        url: 'login.php',
        async: false,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        data: sendstr,
        success:function(response){
        if (response['result']=="login successful")
            {
            change();
            }
        }
    });

    });
});
</script>
</head>
<body>
<h1> INSERT USERNAME AND PASSWORD</h1>
<input type="text" id="username" name="username"> USERNAME <br>
<input type="password" id="password" name="password"> PASSWORD <br>
<input type="button" id="loginForm" class="button positive">
</body>
</html>
于 2013-11-08T12:41:10.527 回答
0

你为什么使用函数 ajaxJson() ...尝试删除它,如果你真的想使用它,然后像这样修改你的按钮代码并$("#loginForm").click(function() { }从 jquery 中删除...

  <input type="submit" id="loginForm" class="button positive" onclick="ajaxJson()">

并更改<script type="text/javascript">而不是<script language="javascript">.. 此标识符不是标准的,此属性已被弃用(已被较新的构造过时)以支持类型。

第一种方式

 function ajaxJson()
 {
       //your code goes here without triggering **click** event.. 
 }

 <input type="submit" id="loginForm" class="button positive" onclick="ajaxJson()">

第二种方式

  $("#loginForm").click(function() 
  {
      //your code goes here...
  }

  <input type="submit" id="loginForm" class="button positive">

将所有内容保留在$(document).ready函数之外...

希望它可以帮助你

于 2013-11-08T12:04:34.833 回答