ajax配置要求,AJAX浅谈
ajax的含义
ajax是异步JavaScript和xml(asynchronous JavaScript and xml):
利用XMLHttpRequest发请求
服务器返回XML格式的字符串,但后面一般使用JSON
JS解析XML,并更新局部页面
代码:
let httpRequest = new XMLHttpRequest() //声明一个xmlhttprequest对象
httpRequest.open('GET', '/xxx') // 配置request
httpRequest.setRequestHeader('Content-Type', 'x-www-form-urlencoded') // 设置请求头第二部分
httpRequest.onreadystatechange = ( => { //随便放在哪个位置,监听状态的变化
if(httpRequest.readyState === 4) {
console.log("请求响应完毕")
console.log(httpRequest.status)
console.log(httpRequest.statusText)
if(httpRequest.status >= 200 && httpRequest.status < 300>) {
console.log("请求成功")
console.log(httpRequest.getAllResponseHeaders())
console.log(httpRequest.responseText)
let string = httpRequest.responseText //取得响应体
let object = window.JSON.parse(string) //把符合JSON语法的字符串转换为JS对象
//JSON.parse是浏览器提供的
} else if(httpRequest.status >= 400) {
console.log('说明请求失败')
}
}
})
httpRequest.send("设置request第四部分") //GET请求不会设置第四部分
用AJAX设置请求头
第一部分GET /XXX HTTP/1.1 : httpRequest.open("get", "/XXX")
第一部分HOST: jack.com:8002 : httpRequest.open('get', "http://jack.com:8002/")
第二部分Content-Type : application/x-www-url-encoded : httpRequest.setRequestHeader("Content-Type", "application/x-www-url-encoded")
第四部分a = 1&b = 2 : httpRequest.send('a = 1&b = 2')
用AJAX获取响应头
第一部分HTTP/1.1 200 OK : httpReuqest.status & httpRequest.statusText
第二部分Content-Type : application/x-www-url-encoded : httpRequest.getResponseHeader("Content-Type")
所有的第二部分 : httpRequest.getAllResponseHeaders()
第四部分 : httpRequest.responseText
现在一般不使用XML,而使用JSON,JSON是道格拉斯写的一本轻量型的文本语言
自己封装jQuery的ajax函数
//传入一个对象,该对象具有url,method等方法和回调函数。
window.jQuery.ajax = function({url, method, body, successFn, failFn, headers}) {
let request = new XMLHttpRequest()
request.open(method, url)
for(let key in headers) {
let value = headers[key]
request.setRequestHeader(key, value)
}
request.onreadystatechange = () => {
if(request.readystate === 4) {
if(request.status >= 200 && request.status < 300) {
successFn.call(undefined, request.responseText)
} else if(request.status >= 400) {
failFn.call(undefined, request)
}
}
}
request.send(body)
}
用promise规范重新封装该函数:
window.jQuery.ajax = function({url, method, body, headers}) {
return new Promise(function(resolve, reject) {
let request = new XMLHttpRequest()
request.open(method, url)
for(let key in headers) {
let value = headers[key]
request.setRequestHeader(key, value)
}
request.onreadystatechange = () => {
if(request.readystate === 4) {
if(request.status >= 200 && request.status < 300) {
resolve.call(undefined, request.responseText)
} else if(request.status >= 400) {
reject.call(undefined, request)
}
}
}
request.send(body)
})
}
window.jQuery.ajax({
url: '/baidu.com',
method: 'GET',
headers: {
'Content-Type' : 'application/x-www-form-urlencoded'
}
}).then(
(responseText) => {
console.log(responseText)
},
(request) => {
console.log(request)
}
)
什么是同源策略?
协议+域名+端口一摸一样
cors跨域 (Cross-Origin Resource Sharing)
就是告诉后端哪个域名可以访问,后端node中写入
response.setHeader('Access-Control-Allow-Origin', '你请求的网站所在')
一般现在跨域用cors跨域比较多
ajax配置要求,AJAX浅谈相关推荐
- 在layui中使用ajax传值给后台,浅谈layui 数据表格前后台传值的问题
1.1查询 layui.use('table', function() { var table = layui.table; table.render({ elem : '#demo', url : ...
- ajax参数中有加号,浅谈在js传递参数中含加号(+)的处理方式
一般情况下,URL 中的参数应使用 url 编码规则,即把参数字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+). 但是对于带有中文的参数 ...
- python配置核_浅谈pytorch卷积核大小的设置对全连接神经元的影响
3*3卷积核与2*5卷积核对神经元大小的设置 #这里kerner_size = 2*5 class CONV_NET(torch.nn.Module): #CONV_NET类继承nn.Module类 ...
- 关于Omnet+Sumo+Veins的安装与配置的一些浅谈
闲言:为了成功安装与运确实是不那么容易,在此期间我看了csdn上的很多文章,不得不说csdn确实是给力,有着很多大牛分享经验,不过作为一个刚接触vanet的新手小白在边看大牛博客边配置时还是遇到了很多 ...
- ajax感受,有什么缺点,浅谈ajax的优点与缺点
AJAX (Asynchronous Javascript and XML) 是一种交互式动态web应用开发技术,该技术能提供富用户体验. 完全的AJAX应用给人以桌面应用的感觉.正如其他任何技术,A ...
- php中jquery ajax请求参数,浅谈Jquery中Ajax异步请求中的async参数的作用
之前不知道这个参数的作用,上网找了前辈的博客,在此收录到自己的博客,希望能帮到更多的朋友: test.html asy.js function testAsync{ var temp; $.ajax( ...
- js 单页面ajax缓存策略,浅谈ajax的缓存机制---IE浏览器方面
这篇文章主要介绍了IE浏览器关于ajax的缓存机制,文中给大家提到了Ajax解决浏览器的缓存问题,解决方法有很多种.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. IE浏览器对于同一 ...
- jquery ajax和servlet,浅谈ajax在jquery中的请求和servlet中的响应
在jsp中,首先,你需要导入jquery的架包: 获取可返回站点的根路径: String path = request.getContextPath(); %> 在jquery中写ajax请求: ...
- ajax机制 缓存,浅谈Ajax的缓存机制
浅谈Ajax的缓存机制 Ajax的缓存机制和浏览器处理资源时的缓存机制是一样的. 三条简单规则: 只要是URL相同的GET请求,浏览器会使用缓存(当然还要看服务器的Cache-Control/Expi ...
最新文章
- Spark 写出MySQL报错,java.sql.BatchUpdateException
- 在.net中如何禁用或启用DropDownList的Items
- Spring Boot——RabbitMQ
- python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)
- 为何@Autowired注解无法实现第三方类的注入?
- Python系统学习流程图, 教你一步步学习python
- 卷积神经网络CNN如何训练?
- code block怎样实现图形界面_Python 代码实现验证码识别,很稳
- ID Tech 5 中 Megatexturequot;针对地形的D3D9 基本实现原理
- 项目Beta冲刺(团队7/7)
- 模块_time模块/copy模块/os模块
- 2021中国研究生数学建模竞赛
- 数值方法:多项式插值
- VMware vSphere Hypervisor 6 (ESXi) 免费许可证使用限制
- FreeSWITCH学习
- python 爬虫--利用百度图片处理OCR识图API进行验证码识别,并通过python、requests进行网站信息爬取(二)实战
- 2022南京商业贷款提前还款
- 计算机卡慢解决方法,电脑很卡怎么办,详细教您电脑很卡很慢应该怎么解决
- ITFriend创业败局(二):初创公司应该怎样分配股权
- 图像形态学(腐蚀、膨胀、开运算、闭运算、梯度、顶帽、黑帽)
热门文章
- Spring Bean的属性注入
- PLSQL9.0下载及配置oracle,PLSQL登录时常见问题解决
- 学科实践活动感悟50字_课改实践提素养 示范引领促教研 ——复兴镇小学语文课堂教学改革“五环四让”教学模式 研讨成果展示活动...
- python进度条 pyqt_python如何通过pyqt5实现进度条
- 各种说明方法的例句_说明方法和例句
- list删除某个元素_Redis对象——列表(List)
- C++ :Signal: SIGSEGV (Segmentation fault) ,深拷贝
- 数据结构与算法 / 贪心算法
- python discuz搜索api_Python + Bottle + 谷歌搜索Api 实现简单搜索引擎
- anaconda打不开没反应_为什么账户总是有点击没对话?无非这2个原因