浏览器中为我们提供了一个JS对象XMLHttpRequet,它可以帮助我们发送HTTP请求,并接受服务端的响应。
意味着我们的浏览器不提交,通过JS就可以请求服务器。
ajax(Asynchronous Javascript And XML)其实就是通过XHR对象,执行HTTP请求。
1、创建XHR对象
var xhr = new XMLHttpRequest(); //暂不考虑兼容
2、XHR的对象属性和方法
方法:open("get/post", url, true/false);//有参数则k=v&k1=v1这种形式send(null);属性://代表请求状态,不断变化,为4时,请求结束readyState//响应的内容responseText//响应的状态码200,403,404status//状态文字statusText事件://当readyState变化时会触发此事件onreadystatechange = function() {};
3、通过XHR对象发送get请求
ajax
4、通过XHR对象发送post请求
(1)、open()第1参数为post
(2)、POST的参数以k=v&k1=v1&k2=v2的形式拼接,并用send()发送
(3)、必须要设置Content-Type为 application/x-www-form-urlencoded
ajax
5、返回值json,html,text,xml
返回值只有两种text,和xml。不过text内容中可以是一段html或json结构的字符串。
(1)、返回json格式
ajax
1, 'name' => '上海'), array('id' => 2, 'name' => '北京'), array('id' => 3, 'name' => '深圳'),);echo json_encode($data);
(2)、返回xml格式
xml通过responseXML来读取, responseXML不是字符串,是DOM对象。
ajax
EOD;echo $xml; 111 222 333
6、ajax的同步与异步
通过设置open()的第三个参数true/false,来查看请求的效果。
同步请求:
发送请求->等待结果->操作完成->继续后面代码。我们必须等待结果处理完毕后才能继续后面的代码,严格按照步骤一步一步执行。
异步请求:
发送请求->继续后面代码->响应结果接收完毕->操作结果。异步请求在发送请求之后没有等待结果的返回而是继续执行后面的代码,也就是说在结果返回之前用户可以操作其他东西。