【Ajax】课程笔记总结 一.

1.1 什么是AJAX

  AJAX就是不刷新页面而到服务器获取数据的一门技术

异步:发送请求后不等返回结果,由回调函数处理结果

JavaScript:向服务器发起请求,获得返回结果,更新页面

XML:封装数据,起到一个传输的作用

1.1 Ajax原理

  同步:客户向服务器发送请求,服务器在处理的时候客户端在等待,客户在阅读页面的时候服务器在等待,客户端和服务器端的步调一致,称之为同步。

异步:浏览器界面要取服务器获取数据,浏览器界面不离开当前页面,他将取数据的工作交给AJAX引擎(XMLHttpRequest对象,这个对象在客户端浏览器上),AJAX去服务器去数据,并且将服务器返回的数据交给浏览器界面。

1.1 创建AJAX对象

  AJAX 的核心是JavaScript对象XMLHttpRequest

  主流浏览器方式:支持火狐、Google、Safari、Opera、包括IE7以上版本浏览器。

 

ie5,6,7,8

关于参数的问题

var request= new ActiveXObject(“Microsoft.XMLHTTP”);  //最原始方式

var request = new ActiveXObject(“Msxml2.XMLHTTP”);    //升级

var request = new ActiveXObject(“Msxml2.XMLHTTP.3.0”);  //升级

var request = new ActiveXObject(“Msxml2.XMLHTTP.6.0”);  //IE维护的最高版本

 

创建一个兼容的ajax对象

1.5 建立对服务器的连接

  通过ajax对象的open()方法创建一个对服务器的HTTP请求

     语法:ajax对象.open(‘请求的方式 get|post’,‘地址 url,[是否异步,默认是true,异步]);

1.6 向服务器发起请求

通过ajax对象带send send()方法向服务器发送请求

语法:ajax对象.send()

 

在审查元素中查看ajax请求的情况

1.7 接受服务器返回的信息

  客户端可以接受服务器返回的字符串、XML、json数组。

 服务器页面执行的结果就是AJAX获取的内容,ajax将PHP运行的结果带回到客户端来。客户端通过ajax对象.ResponseText来回去返回的字符串。

原因:

但客户端点击了按钮的时候,要走两个线程一条往服务器方向走 ,一条在客户端继续执行,继续执行的线程是获取服务器返回的数据,但是那时候服务器的数据根本没有返回来,所以获取的数据是空。

 解决:

我们给AJAX执行的过程划分为5个状态(0-4),每个状态发生变化的时候都会返回通知一下客户端,客户端通过状态决定需要做的操作。

onreadystatechange 表示状态发生改变。

Status表示数据返回的状态码:200表示OK

1.8 Get提交数据

 

在get提交数据的过程中,会出现两个问题

1、如果数据里面有 =、& 将会与提交字符串中的关键字相混肴。

2、在ie浏览器中,不能直接提交中文。

解决方法 :通过 encodeURIComponent()进行编码即可。

HTML代码

<script type="text/javascript">

function fun(){

var username=document.getElementById('username').value;

username=encodeURIComponent(username); //将数据进行编码

var req=new XMLHttpRequest();

req.open('get','4-demo.php?username='+username);   //get提交数据

req.onreadystatechange=function(){

if(req.readyState==4 && req.status==200){

var str=req.responseText;

alert(str);

}

}

req.send(null); //如果没有post提交就写null

}

</script>

用户名:<input type="text" name="" id="username" onblur='fun()'>

 

PHP代码

<?php

print_r($_GET);

运行结果

1.9 Post提交数据

  1、post提交的数据在send()函数中传递

  2、post提交在send()方法前必须设置将传递的数据组织成XML格式,语法结构是:

         setRequestHeader('Content-Type','application/x-www-form-urlencoded'),注意:这句话必须写在send之前。

  3、传递中文的时候不需要编码,但是特殊符号&、=仍然需要编码

  4、在POST提交数据的同时可以进行get传递

HTML页面

setRequestHeader('Content-Type','application/x-www-form-urlencoded'),

posted @ 2016-09-01 15:59  平渊渡海  阅读(263)  评论(0编辑  收藏  举报