糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Ajax的get/post两种请求方式及ajax封装函数

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

时间:2023-04-03 18:12:06

相关推荐

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

AJAX基本用法

引言

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

1. GET请求处理

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

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

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

2.POST请求处理

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

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

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

3.上传文件

注意:

上传文件一般使用POST提交上传文件必须设置enctype="multipart/form-data“上传的文件再PHP可以通过$_FILES获取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基本使用

创建一个异步对象设置请求方式和请求地址 open();

method: 请求的类型(GET或POST)

url:文件在服务器的位置

async: true(异步)或false(同步)发送请求 send();监听异步对象状态的变化 onreadystatechange处理返回的结果

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("请求失败");}}}}}

服务器响应

alert(xhrhttp.responseText); //打印出php文件中的内容

XMLHttpRequest对象

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

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

//兼容IEif (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封装函数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。