请使用原生 JS 写出一个 AJAX 请求(代码中必须出现 XMLHttpRequest)
myButton.addEventListener('click', (e) =>{
let request = new XMLHttpRequest()
request.open('post','./xxx') //配置request
request.send()
request.onreadystatechange = () =>{
if (request.readyState===4) {
if (request.status >= 200 && request.status<300) {
let string = request.responseText
//把符合 JSON 语法的字符串转换成JS对应的值
let object = window.JSON.parse(string)
//JSON.parse 是浏览器提供的
}
}
}
})
AJAX
AJAX:异步的 JavaScript 和 XML
- 使用 XMLHttpRequest 发请求
- 服务器返回 XML 格式的字符串
- JS 解析 XML,并更新局部页面
(由于XML太难写,后面都转用JSON)
JSON
JSON(抄袭JS,但是没有undefined和function类型)
JS vs JSON
undefined 没有
null null
['a','b','c'] ["a","b","c"]
function fn(){} 没有
[name:'value'] ["name": "value"]
'string' "string"
var a={}
self.a=a 搞不定
{proto} 没有原型链
- JSON没有undefined和function
- JSON的字符串首尾必须是"
JS 和 JSON 有什么区别?
1.两门语言,道格拉斯抄袭布兰登艾克的,除了undefined和function其他都炒了
同源策略与CORS跨域
只有 协议+端口+域名 一模一样才允许发AJAX请求
一模一样一模一样一模一样一模一样一模一样
http://baidu.com可以向http://www.baidu.com发AJAX请求吗? no
http://baidu.com:80可以向http://baidu.com:81发AJAX请求吗? no
浏览器必须保证
只有 协议+端口+域名 一模一样才允许发AJAX请求
CORS可以告诉浏览器,我俩一家的,别阻止他
突破同源策略 === 跨域
CORS跨域
response.setHeader('Access-Control-Allow-Origin','*')//CORS核心
Cross-Origin Resouce Sharing
C O源 R S