来自PHP的Jquery ajax响应未定义

jquery ajax response from php undefined

本文关键字:响应 未定义 ajax Jquery PHP 来自      更新时间:2023-09-26

使用ajax获取php响应时遇到问题。javascript似乎是正确的,因为如果我删除login_ajax.php上的所有内容,只使用以下

,它就可以工作
echo 'CORRECT' 
//or 
echo 'INCORRECT'

一旦我使用了真正的php代码,ajax就不会从php得到任何响应。如果我去掉

就更奇怪了
return false

,然后提交表单,我看到正确或不正确显示在浏览器的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'
JAVASCRIPT:

$('#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

哦,天哪,我实际上花了40分钟试图了解你的问题里面,结果是,事实是,你不传递data你收集从表单到PHP通过AJAX。

很简单,在你打电话之前加上这行:

options.data = data;

尽管,正如文档所述:

通常不需要直接调用这个函数,因为有几个更高级的替代函数,如$.get().load(),它们更容易使用。

在你的情况下,我认为$.get()工作一样好。虽然你可能想看看JerrySeeger在评论中说的话,看起来使用GET作为密码可能代表一个巨大的安全漏洞,你也应该使用SSL