JQuery库的前提下发送Ajax表单请求?JQuery库在在IE还在存在的时候很适合作为前端开发兼容浏览器的JavaScript库。之后现在大多数浏览器Firefox,Chrome,Safari对ECMAScript规范支持的原来越快,一些标准API已经可以取代了JQuery的大多数重要功能了,也很少需要做浏览器兼容的Hack操作。
可以使用带有querySelector和querySelectorAll的CSS 选择器语法来选择元素,使用classList API在元素上添加、删除和切换类,使用addEventListener将事件处理程序附加到DOM元素和窗口等等.
创建Ajax请求,需要创建XMLHttpRequest[8]实例,并赋值onreadystatechange属性来监听服务端的回调请求。
var r = new XMLHttpRequest();
r.onreadystatechange = function () {
if (r.readyState != 4 || r.status != 200) return;
var data = JSON.parse(r.responseText);
if(data.status == 1){
window.location = "/blog";
}else{
alert(data.message);
}
};
form数据,让jfinal后端能通过request.getParemeter()获取参数,需要设置RequestHeader的Content-Type值.r.open("POST", "/blog/login",true);
r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
元素,可以通过内置对象FormData来存储form里的提交键值对数据。最后就是组合为key1=value1&key2=value2..格式, 再通过r.send发送出去。具体的项目例子可以看我的JavaWeb学院课程[9]开发JavaWeb网站精讲-基于JFinal框架的第四章第1课时。var form = document.getElementById('form1Login');
const oData = new FormData(form);
var formData = [];
for (const pair of oData.entries())
formData.push(pair[0] +"="+encodeURIComponent(pair[1]));
r.send(formData.join("&"));
function login(event){
var r = new XMLHttpRequest();
r.open("POST", "/blog/login",true);
r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
r.onreadystatechange = function () {
if (r.readyState != 4 || r.status != 200) return;
var data = JSON.parse(r.responseText);
if(data.status == 1){
window.location = "/blog";
}else{
alert(data.message);
}
};
var form = document.getElementById('form1Login');
const oData = new FormData(form);
var formData = [];
for (const pair of oData.entries())
formData.push(pair[0] +"="+encodeURIComponent(pair[1]));
r.send(formData.join("&"));
event.preventDefault();
}