xml: Extensible Markup Language, 即 可扩展标记语言。
json: JavaScript Object Notation,即 JavaScript对象简谱。
ajax: Asynchronous JavaScript and XML,即 异步的JavaScript和XML, 一种前后端异步通讯技术。
jsonp: JSON with Padding, 是数据格式JSON的一种“使用模式”,利用浏览器对<script>标签没有跨域限制的“漏洞”,来达到与第三方通讯的目的。
ajax出现请求跨域错误问题,主要原因就是因为浏览器的“同源策略(协议相同 域名相同 端口相同)”。
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制,需要后端允许请求。
Ajax几种常用的api
JavaScript原生的数据通信 XHR(XMLHttpRequest):
let xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText);
}
}
//get
xhr.open("get", "index.php?id=1", true);
xhr.send();
//post
xhr.open("post", "index.php", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send('id=1');
ES6对XHR封装的原生API,Fetch:
fetch(`url`, { method: "post/get(默认get)", mode: "cors", body: "json对象或者formData对象"})
.then(res => res.json()).then(req => { todo })
.catch(err => console.log(err));
Vue的axios :
axios({
url: '/user/12345',
method: 'post/get(默认get)',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
},
...
}).then(res => console.log(res))
.catch(err => console.log(err) );
Jquery的$.ajax:
$.ajax({
url: "test.html",
method: "post/get(默认get)",
data:{
firstName: 'Fred',
lastName: 'Flintstone'
},
success(res){},
error(err){}
...
});
网友评论