-1

我的 PHP/AJAX/jQuery 登录脚本有什么问题?

我有这个代码:

dologin.php 文件是:

<?php

$is_ajax = $_REQUEST['is_ajax'];
if(isset($is_ajax) && $is_ajax) {

    $username = $_REQUEST['username'];
    $password = $_REQUEST['password'];

    if($username == 'demo' && $password == 'demo') {
        echo "success";
    }
}
?>

index.php 文件是:

<html>
<head>
<script type= "text/javascript" scr= "jquery.latest.min.js" ></script>
<script type="text/javascript">

        $(documnt).ready(function) {

    $('#login').click(function) {

        var action = $("#form1").attr("action");
        var form_data = {
         username: $("#username").val(),
         password: $("#password").val(),
         is_ajax: 1         
    };

    $.ajax({
       type: 'POST',
       url: action,
       data: form_data, 
       success: function(response)
        {
            if(response == 'success')
            {
                $("form1").slideUp('slow', function() {
                $("#message").html('<p class="success"> You have logged in. </p>');
              });
              }
               else 
               $("#message").html('<p class="error"> Invalid username and/or password. </p>');
                }

    });
    return false;
 });
 });
</script>
</head>
<body>
<p>&nbsp;</p>    
<div id="content"> 
 <h1>Login form</h1>   

    <form name="form1" id="form1"  method="post" action="dologin.php">
        <p>
            <label for="username"> Username:</label>
            <input type="text" id="username" name="usernmae" />
        </p>
        <p>
             <label for="password">Password:</label>
            <input type="text" id="password" name="password" /> 
        </p>
        <p>
            <input type="submit" id="login" name="login" value="Login" />
        </p>
    </form>

 </div>
</body>
</html>

它不断给我这个错误信息:

Notice: Undefined index: is_ajax in C:\wamp\www\final project\passnumber\dologin.php on line 3

我是 AJAX 和 jQuery 的新手,请你帮帮我?

4

6 回答 6

3

is_ajax数组中不存在索引$_REQUEST

您应该以这种方式验证它:

if (isset($_REQUEST['is_ajax']) 
{
    #Do something. For instance:
    $myVar = $_REQUEST['is_ajax'];
}
else
{
    return "Something went wrong";
}

您的 JavaScript 对象中语法错误

form_data - {...} 应该 form_data = {...}

于 2013-06-06T15:45:23.313 回答
1

你的逻辑是错误的,你正在设置一个变量并收到一个警告,然后你isset用来检查你刚刚设置的变量是否被设置。

你应该改变:

$is_ajax = $_REQUEST['is_ajax'];
if(isset($is_ajax) && $is_ajax) {

类似于:

$is_ajax = isset($_REQUEST['is_ajax']) && $_REQUEST['is_ajax'];
if($is_ajax) {

而且您的 javascript 中有错字-,应该是=.

编辑:您应该仔细检查所有的javascript,因为第一行应该是:

$(document).ready(function() {

代替:

$(documnt).ready(function) {
于 2013-06-06T15:47:52.853 回答
0

您没有使用 name 提交任何内容is_ajax,因此它是您的代码中未定义的索引。

于 2013-06-06T15:45:14.110 回答
0

要检查它是否是 ajax 请求,请尝试以下操作:

function isAjax() {
    return !empty($_SERVER['HTTP_X_REQUESTED_WITH'])
    && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}

无论如何,如果您不确定数组中的键是否存在,请在将其分配给任何变量之前执行 isset()。

于 2013-06-06T15:47:07.303 回答
0

它更容易向您展示差异,所以只需尝试这个而不是您的 jQuery:

$(function() {
    var action = '';
    var form_data = '';
    $('#login').click(function () {
         action = $("#form1").attr("action");
         form_data = {
         username: $("#username").val(),
         password: $("#password").val(),
         is_ajax: '1'};  

        $.ajax({
            type: 'POST',
            url: action,
            data: form_data, 
            success: function(response) {
                 if(response == 'success') {
                   $("#form1").slideUp('slow', function() {
                     $("#message").html('<p class="success"> You have logged in. </p>');
                   });
                 } else { 
                    $("#message").html('<p class="error"> Invalid username and/or password. </p>');
                 }
            }

         }); 
        return false;      
    });  
});
于 2013-06-06T16:18:08.287 回答
0

如果您只是看到一个空白的白页,这通常意味着您的 php.ini 存在语法错误。或者您没有向该页面添加任何内容。

这对我有用:

我在名为 test.php 的目录中有一个页面

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.0.min.js"></script>
<script>
$(function() {
    var action = '';
    var form_data = '';
    $('#login').click(function () {
         action = $("#form1").attr("action");
         form_data = {
         username: $("#username").val(),
         password: $("#password").val(),
         is_ajax: '1'};  

        $.ajax({
            type: 'POST',
            url: action,
            data: form_data, 
            success: function(response) {
                 if(response == 'success') {
                   $("#form1").slideUp('slow', function() {
                     $("#message").html('<p class="success"> You have logged in. </p>');
                   });
                 } else { 
                    $("#message").html('<p class="error"> Invalid username and/or password. </p>');
                 }
            }

         }); 
        return false;      
    });  
});
</script>
</head>
<body>
<p id="message">&nbsp;</p>    
<div id="content"> 
 <h1>Login form</h1>   

    <form name="form1" id="form1"  method="post" action="dologin.php">
        <p>
            <label for="username"> Username:</label>
            <input type="text" id="username" name="usernmae" />
        </p>
        <p>
             <label for="password">Password:</label>
            <input type="password" id="password" name="password" /> 
        </p>
        <p>
            <input type="submit" id="login" name="login" value="Login" />
        </p>
    </form>

 </div>
</body>
</html>

在同一个目录中,我有一个名为 dologin.php 的 php 文件

$is_ajax = $_REQUEST['is_ajax'];
if(isset($is_ajax) && $is_ajax) {

    $username = $_REQUEST['username'];
    $password = $_REQUEST['password'];

    if($username == 'demo' && $password == 'demo') {
        echo "success";
    } 
}

希望有帮助

于 2013-06-06T17:12:11.613 回答