我试图通过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”它给了我‘未定义指数:...’我的用户名和密码。
你的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。
尝试改变这一点:
数据:{ “用户名”:用户名, “密码”:pswrd},
为此:
数据:“用户名=” +用户名和密码='+密码,
并删除此:
数据类型: 'JSON',
尝试改变<form action="home.php" method="POST">
到<form action="javascript:void(0)" method="POST">
尝试在Ajax调用... data {username:username, password:pswrd}
......没有“