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();
}