AJAX原理和封装
Ajax
Ajax: Asynchronous JavaScript and XML(异步的JavaScript和XML)
- 节省用户操作时间,提高用户体验,减少数据请求
- 传输获取数据
请求状态监控
- onreadystatechange
- readyState属性:请求状态
- 0 (初始化) 还没有调用open()方法
- 1 (载入) 已调用send()方法,正在发送请求
- 2 (载入完成) send()方法完成,已收到全部响应内容
- 3 (解析) 正在解析响应内容
- 4 (完成) 响应内容解析完成,可以在客户端调用了
- status属性:服务器(请求资源)的状态
- 返回的内容
- responseText:返回以文本形式存放的内容
- responseXML:返回XML形式的内容
- readyState属性:请求状态
1 | <input type="button" value="按钮" id="btn"> |
表单
表单:数据的提交
action:数据提交的地址,默认是当前页面
method:数据提交的方式,默认是get方式
1.get
把数据名称和数据值用=连接,如果有多个的话,那么会把多个数据组合用&进行连接,然后把数据放到url?后面传到指定页面
url长度限制的原因,不要通过get方式传递过多的数据
通过url传递,可能会被记录下来(历史记录),暴露在外,可能会对用户隐私造成泄露
传递的值是字符串类型,不能传递其他的数据类型
2.post
理论上无限制(实际上限制还是有的,后端php.ini中设置post_max_size
,默认值post_max_size=8M
,有些服务器会不一样,自身理论上无限制)
通过请求头发送,不会被缓存
可以传递很多种类型,比如文本格式、二进制
enctype:提交的数据格式,默认是application/x-www-form-urlencoded
$_REQUEST
可以获取get方式传过来的数据也可以获取post方式传过来的数据
如果使用$_REQUEST
获取数据则用get方式或post方式传递都可以
但如果指明了用get方式或post方式获取数据,传递方式需要对应起来
1 | <form action="1.get.php"> |
var arr = [1, 2, 3];
alert(JSON.stringify(arr)); // [1, 2, 3]
alert(typeof JSON.stringify(arr)); // string
var j = {left:100};
alert(JSON.stringify(arr)); // {“left”:100}
JSON的key值必须是双引号"
包裹的1
parse: 把字符串转成对应的对象
var s1 = ‘[100,200,300]’;
var a1 = JSON.parse(s1);
alert(a1); // 100,200,300
var s2 = ‘{“left”:100}’;
var a2 = JSON.parse(s2);
alert(a2.left); // 100
var s3 = “{left:100}”;
var a2 = JSON.parse(s2);
alert(a2.left); // 报错,JSON的key值必须是双引号"
包裹的`