AJAX POST请求的PHP页面后,$ _ POST返回空数组

问题描述 投票:0回答:4

我试图通过Ajax到我的用户名和密码后,以我的PHP文件,但它发布[“用户名”]和信息[“密码”]最终是未定义指数

我尝试以下。

/index.PHP

<form action="home.php" method="POST">
<input name= "username" id="usrname" type="text" placeholder="username">
    <input name="pswrd" id="pswrd" type="password" placeholder="password">
    <button type="submit" id="submit">Submit</button>
</form> 

/卖弄.就是

 $('#submit').click(function (e) {
    e.preventDefault();
    var username = $('#usrname').val();
    var pswrd = $('#pswrd').val();

    if (username === "" || pswrd === "") {

        //validation
    } else {
        $.ajax({
            url: "home.php",
            type: 'POST',
            dataType: 'json',
            data: {
                "username": username,
                "password": pswrd
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status);
                alert(thrownError);
            },
            success: function (data) {
                alert('its works')
                // window.location = 'home.php';
            }
        })
    };
})

/home.PHP

if (isset($_POST)) {
$username = $_POST['username'];
$password = $_POST['password'];
    echo "<h2>".$username."</h2>"; 
    echo "<h2>".$password."</h2>";   
} else {    
    echo "<h2>Nothing received</h2>";   
}
print_r($_POST)

当我点击提交请求没有得到,因为它应该处理。当我在“网络 - >预览”我得到=>阵列([用户名] =>管理员[密码] =>管理员),但是当它不给我我home.php页面,当我点击网络“回家检查.PHP”它给了我‘未定义指数:...’我的用户名和密码。

php ajax
4个回答
1
投票

你的JavaScript,使POST请求与它的一些数据home.php

home.php与一些数据由一些HTML小标题和$_POST可变的转储响应。这不是JSON。

你告诉jQuery的dataType: 'json'所以期待JSON。因为它没有得到它,它不会读取响应为成功和调用,而不是error success。既然你没有定义error,什么都不会发生。


如果请求是成功的,它会显示警告。

如果你还没有评论它,你会再运行window.location = 'home.php'这将触发新的HTTP GET请求home.php并显示结果。

该请求将不包括POST数据,以便将home.php显示什么除了一些空<h2>元素,一些不确定的索引错误和空数组的表示。


当我在网络上“home.php”点击它给了我“未定义指数:...”我的用户名和密码。

此手动给出了相同的效果window.location = 'home.php';(发出GET请求)具有相同的问题,如上所述。


如果你要载入一个新的页面,那么请不要使用Ajax的HTTP请求的结果,只需使用常规的表单提交。

当你要处理与JS的反应,而不是离开当前页面使用AJAX。


0
投票

尝试改变这一点:

数据:{ “用户名”:用户名, “密码”:pswrd},

为此:

数据:“用户名=” +用户名和密码='+密码,

并删除此:

数据类型: 'JSON',


-1
投票

尝试改变<form action="home.php" method="POST"><form action="javascript:void(0)" method="POST">


-1
投票

尝试在Ajax调用... data {username:username, password:pswrd} ......没有“

© www.soinside.com 2019 - 2024. All rights reserved.