ajax
工作原理
相当于在用户和服务器之间加了—个中间层(AJAX 引擎),使用户操作与服务器响应异步化。
并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给 Ajax 引擎自己来做, 只有确定需要从服务器读取新数据时再由 Ajax 引擎代为向服务器提交请求。
ajax 是同步还是异步,怎么样实现同步
异步技术
- 打开 url 时,第三个参数,true 为异步,false 为同步
- 当为同步时,无需编写 onreadystatechange 函数,将操作写在 send() 方法后面即可
实现一个 ajax,兼容
var xmlhttp;
if (window.XMLHttpRequest) {
// ie7+,及现代浏览器
xmlhttp = new XMLHttpRequest();
} else {
// ie5 ie6
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange = function () {
console.log(xmlhttp);
// readyState:
// 0:请求未初始化,还没有调用 open()
// 1:服务器已建立连接,open() 已调用,还没有调用 send()
// 2:请求已接收,send() 已调用,且头部和状态可以获得
// 3:请求处理中,responseText 属性已包含部分数据
// 4:请求已完成,且响应已就绪
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById('div').innerHTML = xmlhttp.responseText;
}
};
document.getElementById('btn').onclick = function () {
xmlhttp.open('GET', 'url', true);
xmlhttp.send();
};
document.getElementById('btn2').onclick = function () {
xmlhttp.open('POST', 'url', true);
xmlhttp.setRequestHeader(
'Content-type',
'application/x-www-form-urlencoded'
);
xmlhttp.send('fname=Henry&lname=Ford');
};
Ajax 返回 204 算是成功吗
算,具体看 blog/http/status-code.txt
假如访问 A.com 存进了一个 cookie,在另外一个页面用 ajax 向 A 的域名发请求会携带 cookie 吗
cookie 作用域、csrf 跨站请求伪造知识(解答)
表单提交和 ajax 的区别
- 刷新:ajax 无需刷新网页,表单提交要刷新
- 请求:ajax 后台创建请求,表单放弃本页面再次申请
- 实现:ajax 必须使用 js 实现,表单是浏览器功能,无需 js
- 数据:ajax 需要代码来处理数据,表单根据表单结构自动完成,无需代码干预