AJAX浅谈
发布时间:2020-12-16 03:14:02 所属栏目:百科 来源:网络整理
导读:ajax的含义 ajax是异步JavaScript和xml(asynchronous JavaScript and xml): 利用XMLHttpRequest发请求 服务器返回XML格式的字符串,但后面一般使用JSON JS解析XML,并更新局部页面 代码: let httpRequest = new XMLHttpRequest() //声明一个xmlhttpreque
ajax的含义ajax是异步JavaScript和xml(asynchronous JavaScript and 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设置请求头
用AJAX获取响应头
现在一般不使用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,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跨域比较多 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |