我正在尝试通过ajax将用户名和密码发布到我的php文件中,但是它发布了[[username]]和post [“ password”]最终都是未定义索引
我尝试了以下方法。
/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>
/main.js
$('#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)
当我单击提交时,请求确实得到了应有的处理。当我在'network-> preview'下检查时,我得到=>数组([username] => admin [password] => admin),但是当它没有将我发送到home.php页面时,以及当我单击网络'home'时.php”,它为我的用户名和密码提供了“未定义的索引:...”。
答案 0 :(得分: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”时,它为我提供了“ Undefined index:...”作为我的用户名和密码。
这会手动产生与window.location = 'home.php';
相同的效果(发出GET请求),但存在上述相同的问题。
如果要加载的新页面的HTTP请求的结果和不使用Ajax 后,只需使用常规的表单提交。
当您要使用JS处理响应并且不离开当前页面时,请使用Ajax。
答案 1 :(得分:0)
尝试更改此内容:
数据:{ “用户名”:用户名, “密码”:pswrd }
对此:
数据:'username ='+ username +'&password ='+ pswrd,
并删除此内容:
数据类型: 'JSON',
答案 2 :(得分:-1)
尝试将<form action="home.php" method="POST">
更改为<form action="javascript:void(0)" method="POST">
答案 3 :(得分:-1)
尝试ajax调用... data {username:username, password:pswrd}
...不带“