当前位置: 首页 > news >正文

利用formdata自动序列化和xhr上传表单到后端

//FormData对象是XMLHTTPRequest level2新增的类型,它可以自动序列化表单内容,不再需要我们去写序列化表单方法;
FormData()即可以直接把整个表单给它,也可以分别使用append(‘字段’,‘值’)方法给FormData();
现在就结合xhr写一个简单示例,怎么把表单传递给后端

<html><head><meta http-equiv="content-type" content="text/html;charset=UTF-8"/><title>测试xhr和formdata</title></head><body><div id="regform"><form id="regniter" name="reg" method="post" action=""><label><div class="inputStyle">用户名:<input type="text" name="username" value=""/></div></label><label><div class="inputStyle">&emsp;码:<input type="password" name="pwd" value=""/></div>    </label><label><div class="inputStyle"><input type="button" name="submit1" value="提交"/></div></label></form></div><script>let btn=document.getElementsByName("submit1");btn[0].addEventListener("click",function(){let xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){if(xhr.readyState===4){try{if((xhr.status>=200&& xhr.status<300) || xhr.status===304){//获取从后端返回的数据let dataarr=JSON.parse(xhr.response);console.log(dataarr);}else{console.log("连接后端不成功:",xhr.status);}}catch(ex){xhr.ontimeout=function(){alert('连接超时');};}}};xhr.open("post","regniter.php");let form1=document.forms[0];let username=form1.elements['username'].value;let pwd=form1.elements['pwd'].value;//设置超时为5秒xhr.timeout=5000;//设置重写xhr响应的mime类型,这里是json类型,也可以写成application/json形式xhr.overrideMimeType("text/json");if(username!=="" && pwd!==""){let data=new FormData(form1);xhr.send(data);/*这里是单独设置字段/值,效果和上面是一样的data.append('username')=username;data.append('pwd)=pwd;xhr.send(data);*/form1.elements['submit1'].disabled=true;console.log('已经发送');}})</script></body>
</html>

//这里是后端处理

if(isset($_POST['username'])&&isset($_POST['pwd']))
{$regArr=[];$regArr['username']=$_POST['username'];$regArr['pwd']=$_POST['pwd'];//注意:这里不能用return,即使是文本也不能用return,不然前端收到是空白 echo json_encode($regArr);
}else
{echo 'no';
}
http://www.lryc.cn/news/420705.html

相关文章:

  • 视频号小店大地震?还好我看了原文
  • Genymotion adb shell
  • 探索AI与社交的交汇点:看Facebook如何引领智能化革命
  • JVM 加载阶段 Class对象加载位置是在 堆中还是方法区?
  • Android 获取短信验证
  • 负载均衡详细概念介绍之(四层和七层实现)
  • 力扣 | 递增子序列 | 动态规划 | 最长递增子序列、最长递增子序列的个数、及其变式
  • 008 | 基于RNN和LSTM的贵州茅台股票开盘价预测
  • 尚硅谷谷粒商城项目笔记——六、使用navciat连接docker中的mysql容器【电脑CPU:AMD】
  • 【git】本地更改了,但又想直接从远端拉取覆盖本地(放弃本地更改前行下载)
  • 基于JSP的书店仓库管理系统
  • pytorch框架保存和加载模型
  • 开发输出防护栏以检测GPT-4o幻觉
  • 代码复现,代码改进,算法复现,模型复现
  • 基于STM32开发的智能机器人系统
  • 【数据结构题目】循环队列,以及队列实现栈的模拟
  • 大数据CloudSim应用实践:基于CloudSimExamle6.java修改(超详细教程)
  • 完美解决浏览器的输入框自动填入时,黄色背景问题,以及图标被遮住问题(最新)
  • C 语言中的头文件
  • 数据结构复杂度
  • MySQL基础篇
  • 详解C++中的四种强制转换reinterpret_cast / const_cast / static_cast / dynamic_cast
  • Word中加载Mathtype后粘贴复制快捷键(Ctrl+C/V)不能使用
  • Linux硬件-bios
  • VisionPro二次开发学习笔记12-使用CogToolGroup控件进行图像检测
  • mfc140u.dll丢失的科学修复手段,简单又方便的mfc140u.dll修复
  • RabbitMQ、Kafka对比(超详细),Kafka、RabbitMQ、RocketMQ的区别
  • 【案例35】销售订单公式问题导致系统宕机
  • 编程-设计模式 4:建造者模式
  • 百度文心一言API调用,千帆大模型获取API Key和API Secret图解