Ajax
1.ajax可以理解成是js通过操作XML来完成http请求的过程。
什么时候适合使用ajax?
a。频繁的对数据库(服务器)进行操作的时候。
b。无刷新页面请求时(表单验证)。
3.需要js和数据库交互。
需要:javascript想要验证用户名有没有重复,需要去数据库查询,但是javascript没有办法去数据库查询,但是可以请php(运行在服务器端的语言)帮个忙,将php查询的结果告诉我们就可以(XMLHttpRequest对象)
ajax的优势:
1.传统的web请求,会将表单的数据全部提交到action=‘’这个地址的服务器上,但是密码,email是没有必要提交过去,而且对服务器是一种负担。
Ajax原则:按需取数据,这样可以降低服务器的压力。
什么是回调函数:
步骤:
1.实例化XMLHttpRequest对象。
2.open()打开地址栏。
3.监听ajax请求的状态。
4.send()完成ajax请求。
function ajax(){
var xhr;
xhr=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
var url="index.php?c=user&a=baiduSuggest";
xhr.open('POST',url,true);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.onreadystatechange=callback;
xhr.send('val='+obj);
function callback(){
if(xhr.readyState==4){
if(xhr.status==200){
}
GET方式请求,需要注意:
浏览器为了提高访问同一页面的速度,会将我们访问的数据缓存起来,如果地址栏不变,相当于访问的是同一个页面,这时浏览器读取的缓存的数据儿不是真实的页面数据解决方法。
在地址栏传递参数,可以是当前时间,也可以是随机数。
Json_encode()编码后,返回的是json格式的字符串(任然还是字符串),思路:如何让这个json格式的字符串转化成一个对象。
eval函数
注意:eval()想要将字符串转化成对象,需要先将字符串运行一下,通过();
例如:eval('('+xhr.responseText+')');
异步的概念:自己理解就行。
Ajax请求和传统的Web请求:
Ajax请求:XMLHttpRequest对象发送的请求。
例如:
var url="index.php?c=user&a=ajax_check&time="+Math.random()+"&username="+username.value;
传统的Web请求:
<form action="index.php" method="post">
如果以get方式发送ajax请求,注意:
1.如果在地址栏传递特殊字符(中文),需要转码encodeURL();
2.浏览器有缓存,需要在地址栏传递随机数。Math。random();
如果以post方式发送请求
1、我们发送给服务器数据,通过send()发送过去,通常都是以post方式发送的。
2、以post方式发送,需要setRequestHeader()设置发送头信息。
xhr.setRequestHeader("Content-Type","application/x-www-form-urleccoded");
还有,javascript中,数组也是对象。