xml: Extensible Markup Language, 即 可擴(kuò)展標(biāo)記語言。
json: JavaScript Object Notation,即 JavaScript對(duì)象簡譜。
ajax: Asynchronous JavaScript and XML,即 異步的JavaScript和XML, 一種前后端異步通訊技術(shù)。
jsonp: JSON with Padding, 是數(shù)據(jù)格式JSON的一種“使用模式”,利用瀏覽器對(duì)<script>標(biāo)簽沒有跨域限制的“漏洞”,來達(dá)到與第三方通訊的目的。
ajax出現(xiàn)請(qǐng)求跨域錯(cuò)誤問題,主要原因就是因?yàn)闉g覽器的“同源策略(協(xié)議相同 域名相同 端口相同)”。
CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是"跨域資源共享"(Cross-origin resource sharing)。它允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制,需要后端允許請(qǐng)求。
Ajax幾種常用的api
JavaScript原生的數(shù)據(jù)通信 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對(duì)XHR封裝的原生API,F(xiàn)etch:
fetch(`url`, { method: "post/get(默認(rèn)get)", mode: "cors", body: "json對(duì)象或者formData對(duì)象"})
.then(res => res.json()).then(req => { todo })
.catch(err => console.log(err));
Vue的axios :
axios({
url: '/user/12345',
method: 'post/get(默認(rèn)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(默認(rèn)get)",
data:{
firstName: 'Fred',
lastName: 'Flintstone'
},
success(res){},
error(err){}
...
});