php自动form data请求,前端交互的表单验证知识及案例与FormData()简化Ajax请求——2019年7月17日23时23分...

本文介绍了如何使用JSON.parse()处理前后端交互,包括前端发送JSON数据时的请求头设置,以及如何利用FormData简化Ajax请求。通过实例展示了用户登录验证过程,涉及JSON字符串化、表单数据序列化以及状态码解析。
摘要由CSDN通过智能技术生成

JSON

JSON.parse(): 将JSON格式字符串转为JS对象;

JSON.stringify(): 将JS对象转为JSON格式字符串;

不允许注释,支持数据类型:Number String Boolean Array Object Null

从前端发送JSON数据:注意要修改POST请求头

前端处理从服务器返回的JSON数据:request.setRequestHeader('content-type','application/json;charset=utf-8');

FormData() 演示:var data = new FormData(form表单name属性值);

简化Ajax请求,POST可以去掉请求头,用表单数据初始化FormData表单对象,会自动忽略disabled和按钮的表单数据

前端处理从服务器返回的JSON数据

ca50542efc1cdd59adce83deb9a3b815.png

从前端发送JSON数据:

2e417730da0ede395497c8a7365ac074.png

前后端交互案例:

实例

html>

Ajax-POST

用户登陆

用户名:

邮箱:

密码:

一天

七天

登陆

//获取相关变量

var login = document.forms.namedItem('login' );

var btn = login.submit;

var request = new XMLHttpRequest();

//监听输入框内容

login.username.addEventListener('blur', isEmpty, false);

login.email.addEventListener('blur',isEmpty,false);

login.password.addEventListener('blur',isEmpty,false);

//事件方法

function isEmpty(ev) {

if (ev.target.value.length === 0 ) {

if(ev.target.nextElementSibling ===null){

var tips = document.createElement('span');

switch (ev.target.name) {

case 'username':

tips.innerText = '用户名不能为空';

break;

case 'email':

tips.innerText = '邮箱不能为空';

break;

case 'password':

tips.innerText = '密码不能为空';

break;

default:

tips.innerText = '未知错误';

}

ev.target.parentNode.appendChild(tips);

}

ev.target.focus();

}

}

//消除提示信息

login.username.addEventListener('input', cleartips, false);

login.email.addEventListener('input',cleartips,false);

login.password.addEventListener('input',cleartips,false);

function cleartips(ev) {

var tips = ev.target.nextElementSibling;

if (tips !== null){

tips.parentNode.removeChild(tips);

}

}

//Ajax异步验证

btn.addEventListener('click',check,false);

function check(ev) {

var username = login.username.value;

var email = login.email.value;

var password = login.password.value;

var remember = login.remember.value;

if (username.length === 0 ||email.length === 0 || password.length=== 0 ){

ev.target.removeEventListener('click',check,false);

var blurEvent = new Event('blur');

login.username.dispatchEvent(blurEvent);

return false;

}

var obj = {

username : username,

email : email,

password : password,

remember :remember

};

var data = JSON.stringify(obj);

console.log(data);

request.addEventListener('readystatechange',successCallback,false);

request.open('POST','php/check2.php',true);

request.setRequestHeader('content-type','application/json;charset=utf-8');

request.send(data);

}

function successCallback(ev) {

if(request.readyState ===4){

// console.log(request.responseText);

var obj = JSON.parse(request.responseText);

var tips = document.createElement('span');

var url = '';

switch (obj.status) {

case 1:

tips.innerText = obj.message + '正在跳转中';

url = 'php/admin.php';

break;

case 0:

tips.innerText = obj.message;

break;

default:

tips.innerText = '未知错误';

break;

}

btn.parentNode.appendChild(tips);

setTimeout(function () {

location.href = url;

},3000);

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

效果图:

e7031ba11f56d80524c2a4ecfc0de9ae.png

FormData简化Ajax请求实例

a517b7aa8ea0f38ce7bdcb24a43fbfec.png演示案例:

实例

html>

FormData序列化表单数据

用户登陆

用户名:

邮箱:

密码:

一天

七天

登陆

//获取相关变量

var login = document.forms.namedItem('login' );

var btn = login.submit;

var request = new XMLHttpRequest();

//监听输入框内容

login.username.addEventListener('blur', isEmpty, false);

login.email.addEventListener('blur',isEmpty,false);

login.password.addEventListener('blur',isEmpty,false);

//事件方法

function isEmpty(ev) {

if (ev.target.value.length === 0 ) {

if(ev.target.nextElementSibling ===null){

var tips = document.createElement('span');

switch (ev.target.name) {

case 'username':

tips.innerText = '用户名不能为空';

break;

case 'email':

tips.innerText = '邮箱不能为空';

break;

case 'password':

tips.innerText = '密码不能为空';

break;

default:

tips.innerText = '未知错误';

}

ev.target.parentNode.appendChild(tips);

}

ev.target.focus();

}

}

//消除提示信息

login.username.addEventListener('input', cleartips, false);

login.email.addEventListener('input',cleartips,false);

login.password.addEventListener('input',cleartips,false);

function cleartips(ev) {

var tips = ev.target.nextElementSibling;

if (tips !== null){

tips.parentNode.removeChild(tips);

}

}

//Ajax异步验证

btn.addEventListener('click',check,false);

function check(ev) {

var username = login.username.value;

var email = login.email.value;

var password = login.password.value;

var remember = login.remember.value;

if (username.length === 0 ||email.length === 0 || password.length=== 0 ){

ev.target.removeEventListener('click',check,false);

var blurEvent = new Event('blur');

login.username.dispatchEvent(blurEvent);

return false;

}

// var data = JSON.stringify(obj);

// console.log(data);

request.addEventListener('readystatechange',successCallback,false);

request.open('POST','php/check1.php',true);

request.send(new FormData(login));

}

function successCallback(ev) {

if(request.readyState ===4){

// console.log(request.responseText);

var obj = JSON.parse(request.responseText);

var tips = document.createElement('span');

var url = '';

switch (obj.status) {

case 1:

tips.innerText = obj.message + '正在跳转中';

url = 'php/admin.php';

break;

case 0:

tips.innerText = obj.message;

break;

default:

tips.innerText = '未知错误';

break;

}

btn.parentNode.appendChild(tips);

setTimeout(function () {

location.href = url;

},3000);

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值