AJAX基本用法

引言

Ajax是浏览器提供的一套方法,可以用来实现页面无刷新更新数据,提高用户体验。主要有GET和POST两种请求方式。

1. GET请求处理

GET请求会将数据放到URL后面

GET请求对数据大小限制(2000个字符以下)

用于提交非敏感数据和小数据

2.POST请求处理

POST请求会将数据放到请求头中

POST请求对数据没有大小限制

用于提交敏感数据和大数据

3.上传文件

注意:

  1. 上传文件一般使用POST提交
  2. 上传文件必须设置enctype="multipart/form-data“
  3. 上传的文件再PHP可以通过$_FILES获取
  4. PHP中文件默认会上传到一个临时目录,接收完毕之后会自动删除

语法:

move_upload_file(file,newloc);
//file 规定要移动的文件位置
//newloc 规定文件的新位置//1.获取上传文件对应的指点
$fileInfo = $_FILES["upFile"];
// print_r($fileInfo);
//2.获取上传文件的名称
$fileName = $fileInfo["name"];
//3.获取上传文件保存的临时路径
$filePath = $fileInfo["tmp_name"];// echo $fileName;
// echo "<br>";
// echo $filePath;//4.移动文件
move_uploaded_file($filePath, "../source/".$fileName);

默认情况下服务器对上传文件的大小是有限制的,如果想修改上传文件的限制可以修改php.ini文件。(ctrl+f搜索)

file_uploads = On:是否允许上传文件On/Off 默认是On

upload_max_filesize = 2048M :上传文件的最大限制

post_max_size = 2048M:通过Post提交的最多数据

max_execution_time = 30000 :脚本最长的执行时间 单位为秒

max_input_time = 30000:接收提交的数据的时间限制,单位为秒

memory_limit = 2048M:最大的内存消耗

AJAX GET基本使用

  1. 创建一个异步对象
  2. 设置请求方式和请求地址 open();
    method: 请求的类型(GET或POST)
    url:文件在服务器的位置
    async: true(异步)或false(同步)
  3. 发送请求 send();
  4. 监听异步对象状态的变化 onreadystatechange
  5. 处理返回的结果
window.onload = function (ev) {var oBtn = document.querySelector('button');oBtn.onclick = function (ev1) {// 1.创建一个异步对象var xhrhttp = new XMLHttpRequest();// 兼容IEif (window.XMLHttpRequest) {xhrhttp = new XMLHttpRequest();} else {xhrhttp = new             ActiveXObject("Microsoft.HMLHTTP");}// 2.设置请求方式和请求地址/* method: 请求的类型(GET或POST)url:文件在服务器的位置async: true(异步)或false(同步)*/xhrhttp.open("GET", "ajax04_get.php", true);// 3.发送请求xhrhttp.send();// 4.监听异步对象状态的变化xhrhttp.onreadystatechange = function (ev2) {// 5.处理返回的结果if (xhrhttp.readyState === 4) {if (xhrhttp.status >= 200 && xhrhttp.status < 300 || xhrhttp.status === 304) {console.log("请求成功");} else {console.log("请求失败");}}}}}

服务器响应

属性 描述
responseText 获得字符串形式的响应数据
responseXML 获得XML形式的响应数据
alert(xhrhttp.responseText);   //打印出php文件中的内容

XMLHttpRequest对象

所有现代浏览器均支持XMLHttpRequest对象(IE5和IE6使用ActiveObject)

用于在后台与服务器交换数据

//兼容IE
if (window.XMLHttpRequest) {xhrhttp = new XMLHttpRequest();} else {xhrhttp = new             ActiveXObject("Microsoft.HMLHTTP");}

POST基本使用

用 setRequestHeader() 像表单那样POST数据,添加HTTP头。

且应放到open和send中间

JSON 和 JS 的对象互转

JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串

var json = JSON.stringify(a:'hello',b:'world');
//结果是 "a":'hello',"b":'world'
var obj = JSON.parse("a":"hello",";b":"world");
//结果是 a:'hello',b:'world'

AJAX的封装代码


function obj2str(data) {/*{"userName":"lnj","userPwd":"123456","t":"3712i9471329876498132"}*/data = data || {}; // 如果没有传参, 为了添加随机因子,必须自己创建一个对象data.t = new Date().getTime();var res = [];for (var key in data) {// 在URL中是不可以出现中文的, 如果出现了中文需要转码// 可以调用encodeURIComponent方法// URL中只可以出现字母/数字/下划线/ASCII码res.push(encodeURIComponent(key) + "=" + encodeURIComponent(data[key])); // [userName=lnj, userPwd=123456];}return res.join("&"); // userName=lnj&userPwd=123456
}
function ajax(option) {// 0.将对象转换为字符串var str = obj2str(option.data); // key=value&key=value;// 1.创建一个异步对象var xmlhttp, timer;if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp = new XMLHttpRequest();}else {// code for IE6, IE5xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}// 2.设置请求方式和请求地址/*method:请求的类型;GET 或 POSTurl:文件在服务器上的位置async:true(异步)或 false(同步)*/if (option.type.toLowerCase() === "get") {xmlhttp.open(option.type, option.url + "?" + str, true);// 3.发送请求xmlhttp.send();} else {xmlhttp.open(option.type, option.url, true);// 注意点: 以下代码必须放到open和send之间xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");xmlhttp.send(str);}// 4.监听状态的变化xmlhttp.onreadystatechange = function (ev2) {/*0: 请求未初始化1: 服务器连接已建立2: 请求已接收3: 请求处理中4: 请求已完成,且响应已就绪*/if (xmlhttp.readyState === 4) {clearInterval(timer);// 判断是否请求成功if (xmlhttp.status >= 200 && xmlhttp.status < 300 ||xmlhttp.status === 304) {// 5.处理返回的结果// console.log("接收到服务器返回的数据");option.success(xmlhttp);} else {// console.log("没有接收到服务器返回的数据");option.error(xmlhttp);}}}// 判断外界是否传入了超时时间if (option.timeout) {timer = setInterval(function () {console.log("中断请求");xmlhttp.abort();clearInterval(timer);}, option.timeout);}
}

Ajax的get/post两种请求方式及ajax封装函数相关推荐

  1. ajax onload怎么用,Ajax中onload和onreadystatechange两种请求方式的区别

    一. onreadystatechange 1. XMLHttpRequest对象有一个属性readyState,将其(xhr.readyState)打印后发现.进入onreadystatechang ...

  2. Ajax 两种请求方式的区别onload和onreadystatechange

    一. onreadystatechange 1. XMLHttpRequest对象有一个属性readyState,将其(xhr.readyState)打印后发现.进入onreadystatechang ...

  3. 浅谈CORS的两种请求方式

    先附上HTTP中文开发手册链接:http://www.php.cn/manual/view/35588.html 参考文章:https://blog.csdn.net/qq_34125349/arti ...

  4. Python爬虫的两种请求方式,读者都了解吗?

    Python爬虫中的get和post请求 前言 Python爬虫请求数据有get和post两种请求方式,也许读者对于它们的应用已经掌握到炉火纯青的地步了,但是关于它们的基本语法是否了解吗? 文章目录 ...

  5. 记录一下前端针对下载文件的两种请求方式

    之前做了很多下载文件的接口都没习惯进行记录,现在开始规范自己,让自己养成一个随手保存代码的好习惯.写的不足之处请指出,会改正. 说一下前端下载文件常用的两种方式,get请求和post请求 get请求相 ...

  6. http消息当中,post和get两种请求方式的区别

    上周尼玛哥一直在看有关微信小程序,订阅号,服务号,等微信的应用,没来的及继续学习,今个学习到javaweb 的servlet ,觉得有个地方,可以大家稍微注意一下,就是消息请求当中,GET 与 POS ...

  7. get post请求区别_网页常见的两种请求方式Get和Post

    除了获取网页还有哪些网络请求的知识需要我们掌握呢? 我们请求网页,平时看到的是浏览器访问,实际在实现中会有不同的请求方式的,那么请求网页的方式最常用到的是Get和Post. Get和Post的区别 当 ...

  8. jav 通过HttpClient实现调用外部接口两种请求方式(get/post)

    1.简介 HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的 ...

  9. POST与GET两种请求方式的区别:

    1.GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接.URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后 ...

最新文章

  1. unix 查询进程并中止
  2. jQuery的end()方法使用详解
  3. QDoc包括外部代码includingexternalcode
  4. 深入理解 Linux的 I/O 系统
  5. lua cocos 中对FNT字体的使用
  6. SAP ABAP实用技巧介绍系列之利用RTTC给DDIC structure动态添加新的field
  7. java贪吃蛇_如何用Java还原童年回忆?在线教你完成贪吃蛇小游戏
  8. 周期均方根和有效值的区别_买羊肉,“羔羊肉”和“羊肉”有啥区别?口感差别大,别再乱买了...
  9. webservice 心得
  10. 2015 8月31号 本周计划
  11. linux上derby数据库,体验纯Java数据库——Derby
  12. 【python】Django设置SESSION超时时间没有生效?
  13. 创建数独小游戏uniapp/vue
  14. 项目管理 : 如何做好建筑工程的施工成本管理
  15. Server 2008系统安装驱动提示“无法验驱动程序数字签名”怎么办?
  16. 【Spring+Mybatis】 Invalid bound statement (not found): com.xxxx.mapper.UserMapper.selectUser
  17. vue项目-android版本引入微信录音
  18. Linux——Makefile文件
  19. linux strip作用,linux gcc strip命令简介
  20. [笛卡儿积]业务中的复选框条件--输出所有的情况结果

热门文章

  1. 告别linux、vim下讨厌的声音提示
  2. vue中如何使用mermaid
  3. monkey命令——压力测试——转载参考03
  4. 群晖python脚本_群晖、Python、小米摄像头、OneDrive应用案例
  5. linux中tldr(命令手册)
  6. JAVA——写入指定文本内容(字符)
  7. 线程池的种类有哪些?
  8. 2013年7月微软MVP申请开始啦!
  9. YOLOv5中FPS计算
  10. NACOS漏洞深入解析(审计+复现)