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浅谈相关推荐

  1. 在layui中使用ajax传值给后台,浅谈layui 数据表格前后台传值的问题

    1.1查询 layui.use('table', function() { var table = layui.table; table.render({ elem : '#demo', url : ...

  2. ajax参数中有加号,浅谈在js传递参数中含加号(+)的处理方式

    一般情况下,URL 中的参数应使用 url 编码规则,即把参数字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+). 但是对于带有中文的参数 ...

  3. python配置核_浅谈pytorch卷积核大小的设置对全连接神经元的影响

    3*3卷积核与2*5卷积核对神经元大小的设置 #这里kerner_size = 2*5 class CONV_NET(torch.nn.Module): #CONV_NET类继承nn.Module类 ...

  4. 关于Omnet+Sumo+Veins的安装与配置的一些浅谈

    闲言:为了成功安装与运确实是不那么容易,在此期间我看了csdn上的很多文章,不得不说csdn确实是给力,有着很多大牛分享经验,不过作为一个刚接触vanet的新手小白在边看大牛博客边配置时还是遇到了很多 ...

  5. ajax感受,有什么缺点,浅谈ajax的优点与缺点

    AJAX (Asynchronous Javascript and XML) 是一种交互式动态web应用开发技术,该技术能提供富用户体验. 完全的AJAX应用给人以桌面应用的感觉.正如其他任何技术,A ...

  6. php中jquery ajax请求参数,浅谈Jquery中Ajax异步请求中的async参数的作用

    之前不知道这个参数的作用,上网找了前辈的博客,在此收录到自己的博客,希望能帮到更多的朋友: test.html asy.js function testAsync{ var temp; $.ajax( ...

  7. js 单页面ajax缓存策略,浅谈ajax的缓存机制---IE浏览器方面

    这篇文章主要介绍了IE浏览器关于ajax的缓存机制,文中给大家提到了Ajax解决浏览器的缓存问题,解决方法有很多种.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. IE浏览器对于同一 ...

  8. jquery ajax和servlet,浅谈ajax在jquery中的请求和servlet中的响应

    在jsp中,首先,你需要导入jquery的架包: 获取可返回站点的根路径: String path = request.getContextPath(); %> 在jquery中写ajax请求: ...

  9. ajax机制 缓存,浅谈Ajax的缓存机制

    浅谈Ajax的缓存机制 Ajax的缓存机制和浏览器处理资源时的缓存机制是一样的. 三条简单规则: 只要是URL相同的GET请求,浏览器会使用缓存(当然还要看服务器的Cache-Control/Expi ...

最新文章

  1. Spark 写出MySQL报错,java.sql.BatchUpdateException
  2. 在.net中如何禁用或启用DropDownList的Items
  3. Spring Boot——RabbitMQ
  4. python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)
  5. 为何@Autowired注解无法实现第三方类的注入?
  6. Python系统学习流程图, 教你一步步学习python
  7. 卷积神经网络CNN如何训练?
  8. code block怎样实现图形界面_Python 代码实现验证码识别,很稳
  9. ID Tech 5 中 Megatexturequot;针对地形的D3D9 基本实现原理
  10. 项目Beta冲刺(团队7/7)
  11. 模块_time模块/copy模块/os模块
  12. 2021中国研究生数学建模竞赛
  13. 数值方法:多项式插值
  14. VMware vSphere Hypervisor 6 (ESXi) 免费许可证使用限制
  15. FreeSWITCH学习
  16. python 爬虫--利用百度图片处理OCR识图API进行验证码识别,并通过python、requests进行网站信息爬取(二)实战
  17. 2022南京商业贷款提前还款
  18. 计算机卡慢解决方法,电脑很卡怎么办,详细教您电脑很卡很慢应该怎么解决
  19. ITFriend创业败局(二):初创公司应该怎样分配股权
  20. 图像形态学(腐蚀、膨胀、开运算、闭运算、梯度、顶帽、黑帽)

热门文章

  1. Spring Bean的属性注入
  2. PLSQL9.0下载及配置oracle,PLSQL登录时常见问题解决
  3. 学科实践活动感悟50字_课改实践提素养 示范引领促教研 ——复兴镇小学语文课堂教学改革“五环四让”教学模式 研讨成果展示活动...
  4. python进度条 pyqt_python如何通过pyqt5实现进度条
  5. 各种说明方法的例句_说明方法和例句
  6. list删除某个元素_Redis对象——列表(List)
  7. C++ :Signal: SIGSEGV (Segmentation fault) ,深拷贝
  8. 数据结构与算法 / 贪心算法
  9. python discuz搜索api_Python + Bottle + 谷歌搜索Api 实现简单搜索引擎
  10. anaconda打不开没反应_为什么账户总是有点击没对话?无非这2个原因