React中Ajax异步解决小技巧
来源:互联网 发布:汽车行业设计软件 编辑:程序博客网 时间:2024/06/01 09:34
1.设置 setTimeout定时器,通过延迟下一操作的执行时间,来解决ajax网络请求和下一操作异步的冲突(注意:时长的设置要大于等于网络请求的执行时间),代码如下
// 定义状态机 constructor(props, context) { super(props, context); this.state = { content:null } }//网络请求方法Add = () => { var formData = new FormData($("#userForm")[0]); // 定位到userForm表单,并将表单定位转为FormData对象 $.ajax({ url: '/add', //网络请求url地址 type: 'POST', data: formData, //表单数据 cache: false, contentType: false, //或者 contentType:multipart/form-data均可以,multipart/form-data表示可以上传下载文件(既可以发送文本数据,也支持二进制数据上载),表明传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法;contentType默认为application/x-www-form-urlencoded不能上传文件 processData: false, success: function (data) { console.log('成功'); this.setState({content:'修改成功'}) }.bind(this), error: function (xhr, status, err) { }.bind(this) }); } //执行操作this.add();setTimeout(() => { if(this.state.content=='修改成功'){alert('修改成功')}else{alert('修改失败')} }, 1000);//如果不加1秒定时延迟,会直接进行判断,即未等网络请求结束便进行了判断
2.设置 ajax中参数async的属性
- async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。
- 通过该方式解决1中的异步问题,加上async:false, 代码如下
/ 定义状态机 constructor(props, context) { super(props, context); this.state = { content:null } }//网络请求方法Add = () => { var formData = new FormData($("#userForm")[0]); // 定位到userForm表单,并将表单定位转为FormData对象 $.ajax({ url: '/add', //网络请求url地址 type: 'POST', data: formData, //表单数据 async:false, cache: false, contentType: false, //或者 contentType:multipart/form-data均可以,multipart/form-data表示可以上传下载文件(既可以发送文本数据,也支持二进制数据上载),表明传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法;contentType默认为application/x-www-form-urlencoded不能上传文件 processData: false, success: function (data) { console.log('成功'); this.setState({content:'修改成功'}) }.bind(this), error: function (xhr, status, err) { }.bind(this) }); } //执行操作this.add();if(this.state.content=='修改成功'){alert('修改成功')}else{alert('修改失败')}
阅读全文
0 0
- React中Ajax异步解决小技巧
- Ajax 异步小demo
- 解决JQUERY ajax异步
- ajax解决跨域问题的一些小技巧
- 解决Ajax异步上传文件
- Promise解决AJAX异步问题
- jquery ajax 请求小技巧
- React Native JavaScripts的实用小技巧
- React Native 之小技巧总结
- Delphi中颜色取值问题,解决小技巧(Delphi)
- 小技巧:如何解决Eclise中JBoss服务器启动超时
- ajax中async同步和异步的区别和使用技巧
- Ajax 注册异步验证小例子
- ajax异步加载的小问题
- AJAX的异步请求小例子
- 【jQuery】解决在循环中使用ajax异步时,数据的同步问题
- js异步变同步小技巧-递归
- Ajax异步通信中文乱码的解决
- Ionic3学习笔记(十一)实现省市区三级联动
- mysql常用操作:插入操作;表、列操作;主键外键操作
- ubuntu16.04安装nvidia驱动+cuda8.0+cuDnn5.0
- HTML 5 视频/音频参考手册
- pycharm安装vim插件
- React中Ajax异步解决小技巧
- 个人日记本在线时间显示
- Verilog HDL-2
- postgreSQL和orcale之间的语言区别
- 习题6.18
- Spring-boot自学笔记(2) eclipse在包下如何创建文件夹
- Linux profile、bashrc、bash_profile的区别
- 网页在线倍速播放视频神器enounce myspeed
- STM32F4的IAP原理和组成1