好吧,所以不用
cookies
使用
xmlHttpRequest()
您可以使用
send()
作用
Web API | MDN:
send()接受一个可选参数,用于指定请求的正文;这主要用于PUT等请求。如果请求方法为GET或HEAD,则忽略body参数,并将请求body设置为null。
对象
发送()
允许参数;在这种情况下,您可以在
object
.send({
user: email,
pass: password
});
然后在PHP中
$_POST
将数据放入正确的数组:
if($_POST)
{
$email = $_POST['user'];
$password = $_POST['pass'];
}
序列化
或者可以将数据序列化为字符串:
var params = "email="+ email + "&pass="+ password;
然后发送:
.send(params);
如果您使用的是jQuery,那么也可以使用其方便的little
serialize()
作用
$('form').serialize();
这将简单地将项目放入一个字符串中,如上所示。
一旦您在
login.php
如果序列化,则可以解析字符串,如果将其放入对象中,则可以使用标准
$\u帖子
变量
if($_POST)
{
parse_str($_POST, $form);
// you can now get the post data into an array:
$form['email'];
$form['password'];
}
决议
你的
login()
功能:
function logIn() {
var email = document.getElementById("InputEmail").value;
var pass = document.getElementById("InputPass").value;
var re = /^[a-zA-Z0-9]+$/i;
if (!validateEmail(email)) {
swal("check email");
} else if (pass.length < 6) {
swal("max password length 6 char");
} else {
refreshData("login.php", {
email: email,
password: pass
});
}
}
然后你的
refreshData()
函数如下所示:
function refreshData(file, data) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", file);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(data);
xmlhttp.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
location.reload();
} else {
swal(msg);
};
}
}
承诺
或者,更好的是,您可以使用
fetch()
哪一个更好(更新)的替代品
xmlHttpRequest
.你也可以使用承诺-这很有效。
function refreshData(url, data) {
return fetch(url, {
body: JSON.stringify(data),
cache: 'no-cache',
method: 'POST',
mode: 'cors'
})
.then(function(response){
return response.json();
})
.catch(function(e) {
console.log("Error: ", e);
});
}
这是实现AJAX调用的新方法,如果您感兴趣,请看
MDN's documentation
,他们都很好,也有很好的例子。