-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 に答える
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 に構文エラーがあることを意味します。または、そのページに何も追加していません。

これが私のために働いているものです:

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 に答える
0

名前 で何も送信されていない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 に答える