ajax请求出错_学习笔记:Ajax总结
以下内容均为个人学习过程的总结记录,如有错误,望各位大佬指正~
是什么
Asynchronous JavaScript And XML,异步JS和XML:在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术(在等待服务器响应时执行其他脚本,当响应就绪后对响应进行处理)
为什么用
优点
- 异步模式,提升用户体验
- 优化浏览器及服务器之间的传输,减少不必要的数据往返,减少带宽占用
- AJax引擎在客户端运行,承担了部分本来由服务器承担的工作,从而减少大用户量下的服务器负载
缺点
- 不支持浏览器back按钮
- 安全问题:暴露了与服务器交互的细节
- 对搜索引擎的支持比较弱
- 破坏了程序的异常机制
- 不易调试
如何用(原生)
- 内容改变
- 某异步函数被调用
1、AJAX XHR
XMLHttpRequest对象:用于后台与服务器交换数据,使之可用JS向服务器发起请求并处理响应而不阻塞用户,进行页面的局部更新
创建XHR对象
var xmlhttp;
if (window.XMLHttpRequest){xmlhttp = new XMLHttpRequest();
}
else{xmlhttp = new ActiveObject('Microsoft.XMLHTTP')
}
2、向服务器发送请求
xmlhttp.open('GET', 'test1.txt', true);
// true表示异步,请求类型为get,文件在服务器上的位置为test1.txt
xmlhttp.send();
//send(string)仅用于post请求
请求方式的选择
使用post的情况
可设置请求头,规定请求数据类型,比get更安全;传输文件体积无限制;常用于上传数据
- 无法使用缓存文件(更新服务器上的文件或数据)
- 向服务器发送大量数据(post没有限制)
- 发送包含未知字符的用户输入,post比get更稳定也更可靠
- 像表单一样post数据:使用setRequestHeader()来添加HTTP头,然后在send方法中发送数据(请求体)
xmlhttp.open('post', 'ajax_test.asp', 'true');
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send('fname=Bill&name=Gates');
使用get
通过URL传递参数,相对不安全,但传输速度快;传输文件小;常用于获取数据
- 为避免得到缓存的结果,可向URL中添加一个唯一的ID
xmlhttp.open('get', 'demo_get.asp?t=' + Math.random(), true);
xmlhttp.send(); - 通过get方法发送信息,可向URL添加信息
xmlhttp.open('get', 'demo_get2.asp?fname=Bill&name=Gates', true);
xmlhttp.send();
使用delete
使用put
3、服务器响应
获取来自服务器的响应:使用XHR对象的responseText或responseXML属性
- responseTest:字符串响应
- responseXML:XML响应
4、响应就绪,执行函数
onreadystatechange事件
每当readyState改变时,就会触发onreadystatechange事件。onreadystatechange储存函数,每当readyState属性改变时调用;readyState储存XHR的状态;
- 0:请求未初始化
- 1:请求连接已建立
- 2:请求已接受
- 3:请求处理中
- 4:请求已完成,响应就绪
status
- 200:OK
- 404:未找到页面
status:HTTP状态码
1xx
(临时响应):表示临时响应并需要请求者继续执行操作2xx
(成功):表示成果处理了请求3xx
(重定向):表示要完成请求需要进一步操作,通常用于重定向4xx
(请求错误):表示可能出错,妨碍了服务器的处理5xx
(服务器错误):表示服务器在尝试处理请求时发生内部错误,这些错误可能是服务器本身的错误,而不是请求出错
响应就绪
当async=true时,应在响应处于onreadystatechange事件中的就绪状态时执行函数
xmlhttp.onreadystatechange = function(){if(xmlhttp.readyState == 4 && xmlhttp.status == 200){documemt.getElementById('myDiv').innerHTML = xmlhttp.respenseText;}
}
xmlhttp.open('get', 'test1.txt', true);
xmlhttp.send();
当async=false时(同地),JS会等到服务器响应完毕再继续执行,若服务器繁忙或缓慢,应用程序会挂起或停止(此时无需编写onreadystatechange函数)
xmlhttp.open("GET","test1.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
封装
function ajax(url, fnSucc, fnFail){var xmlhttp;if(window.XMLHttpRequest){xmlhttp = new XMLHttpRequest();}else{xmlhttp = new ActiveObject('Microsoft.XMLHTP');}xmlhttp.onreadystatechange = function(){if(xmlhttp.readyState == 4 && xmlhttp.status == 200){fnSucc(xmlhttp.responseText)}else{if(fnFail){fnFail(xmlhttp.responseText)}}}xmlhttp.open('GET', url)xmlhttp.send()
}
ajax请求出错_学习笔记:Ajax总结相关推荐
- mvc中ajax的跳转,springmvc ajax 跳转的学习笔记
Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,下面我们来看一篇关于springmvc ajax 跳转 ...
- ajax请求提示html状态码302,快速解决ajax请求出错状态码为0的问题
今天在使用 ajax 向后台请求数据时出现错误,提示状态码为 0 ,后台采用的是 spring mvc 架构. 状态码为0是什么意思呢?查找了下,原来它意味着 (未初始化)即没有调用到send()方法 ...
- DHCP服务_学习笔记
DHCP服务_学习笔记 DHCP(Dynamic Host Configuration Protocol):动态主机配置协议 Lease:租约 续租时间需要是租期时间的一半 UDP协议: Ser ...
- 友盟统计+渠道包_学习笔记
友盟统计+渠道包_学习笔记 资料: 官网:https://developer.umeng.com/docs/66632/detail/66889#h3-u5E38u89C1u95EEu9898 视频资 ...
- html ajax请求怎么用,如何使用ajax,ajax请求的五个步骤
有很多童鞋,在WEB前端面试的时候,常会被Ajax问题难住,其实Ajax没有你们理解的那么难,现在源码时代H5学科讲师带着大家重新来回顾一下知识点:随便再给大家普及一下小常识,今天咱们聊的就是怎么快速 ...
- jQuery ajax请求两次问题,jquery ajax请求了两次问题
页面有一个请求form: 订单编号 用户帐户 发货状态 请选择 未发送 已发送 查询 JavaScript请求部分: function showdatalist() { var username = ...
- db4o_8.0对象数据库官方文档翻译_学习笔记三
紧接上篇:db4o_8.0对象数据库官方文档翻译_学习笔记二 3. Object Manager Enterprise Overview(OME视图)即OME插件的使用 If you did not ...
- 韩顺平php可爱屋源码_韩顺平_php从入门到精通_视频教程_第20讲_仿sohu主页面布局_可爱屋首页面_学习笔记_源代码图解_PPT文档整理...
韩顺平_php从入门到精通_视频教程_第20讲_仿sohu首页面布局_可爱屋首页面_学习笔记_源代码图解_PPT文档整理 对sohu页面的分析 注释很重要 经验:写一点,测试一点,这是一个很好的方法. ...
- 图论01.最短路专题_学习笔记+模板
图论01.最短路专题_学习笔记+模板 一.定义与性质 ● 需要的前导知识点 路径 最短路 有向图中的最短路.无向图中的最短路 单源最短路.每对结点之间的最短路 ● 最短路的性质 对于边权为正的图,任意 ...
最新文章
- 2016百度实习编程题:括号序列
- 一步步写一个符合Promise/A+规范的库 1
- MySQL数据库备份和还原的常用命令小结
- H264 Profile对比分析
- 在python中len表示的数据类型是_python基本数据类型学习
- WPF中的触发器(Trigger)
- LwIP之网络接口管理
- html5移动开发入门知识
- AsyncTask doinbackground onProgressUpdate onCancelled onPostExecute的基本使用
- java中static类的作用是什么意思_java中static关键字是什么意思
- wav格式怎么转换成flac?
- 软件测试之因果图法(P24——P26)
- Unity,C#版的动画曲线,Tween:EaseIn,EaseOut,EaseInOut(编程语言翻译版本)
- with dlz mysql 条件_BIND+DLZ+MYSQL
- 【小知识】TVS瞬态抑制二极管与齐纳二极管(稳压管)的差异点分析
- 15.JavaScript——34——JavaScript高级
- Amazon RDS介绍 (一)
- 英飞凌硅麦焊接注意事项
- AForge “未能加载文件或程序集“AForge.Video.FFMPEG.dll”或它的某一个依赖项。找不到指定的模块”
- Android 解压 Zip 压缩文件
热门文章
- flex右对齐_移动WEB开发 — Flex布局
- mysql 组复制 不一致_MySQL主从复制什么原因会造成不一致,如何预防及解决
- win10电脑黑屏只有鼠标箭头_电脑开机就黑屏,只显示鼠标怎么办?别急,简单几步,轻松解决!...
- 中职计算机专业第二单元试题,大学计算机Moodle第二单元测验满分答案
- java 标识变量_Java变量与数据类型之一:Java编程规范,关键字与标识符
- 分类问题的评价及matrix , precision, recall
- SuperSocket架构设计示意图【转】
- 如何使用CHM 绕过Device guard
- Service通信详解
- 如何让一个用户拥有root权限