0

PHP 応答を取得するために ajax を使用してフォームを取得する際に問題が発生しました。login_ajax.php のすべてを消去し、次のもののみを使用すると機能するため、javascript は正しいようです。

echo 'CORRECT' 
//or 
echo 'INCORRECT'

実際の php コードを使用すると、ajax は PHP から応答を受け取りません。削除するとさらに奇妙になります

return false

javascript からフォームを送信すると、ブラウザの login_ajax.php に正しいまたは正しくないものが表示されます。

HTML:

<form id="login" action='login_ajax.php' method="get">

    <label>Email: <input type="text" name="email" id="email" value="nano@nano.com"></label>
    <label>Password: <input type="text" name="password" id="password" value="x"></label>

    <input type="submit" value="login">
    <div id="straight_response">php response here</div>
    <div id="message">status</div>
</form>

PHP:

if (isset($_GET['password'])) {
    $email = $_GET['email'];
    $password = $_GET['password'];
    $stored_pass = "123";

    if ($password == $stored_pass) {
        echo "CORRECT";
    } else {
        echo "INCORRECT";
    }
}
//Javascript works when using one of the two lines below instead of the code above
//echo 'INCORRECT';
//echo 'CORRECT'

ジャバスクリプト:

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


var email;
    var password;

    email       = $('#email').val();
    password    = $('#password').val();

    var data = {};
    data.email  = email;
    data.password   = password;

    var options = {};
    options.dataType = 'text';
    options.type = 'get';
    options.url= 'login_ajax.php';
    options.success = function (response) {
    //  jQuery.trim(response);
        console.log(response.results);
        console.log(response.query);
        $('#always').text(response);

        if (response === 'CORRECT') {
            $('#message').text('you got it right');
            console.log("good combination");
        }
        else if (response === 'INCORRECT') {
            $('#message').text('sorry, try again');
            console.log("bad combination");
        }
    };

    $.ajax(options);
    return false;
});//#login function
4

1 に答える 1

1

なんてこった、私は実際にあなたの問題を裏返しに理解しようとして40分を費やしましたが、実際には、フォームから収集したものをAJAXを介してPHPに渡していないことがわかりました。data

簡単に修正できます。電話をかける前に次の行を追加してください。

options.data = data;

ただし、ドキュメントに記載されているように:

多くの場合、この関数を直接呼び出す必要は$.get()あり.load()ません.

あなたの場合、私は$.get()うまくいくと思います。コメントで JerrySeeger が言ったことを見たいと思うかもしれませんが、パスワードに使用するGETと大きなセキュリティ ホールになる可能性があるように見えますが、おそらく SSL を使用する必要があります。

于 2013-04-18T23:53:51.473 に答える