PHPAjax深刻解析

AJAX:Asynchronous JavaScript And Xml(异步的JS和XML)

一起:客户端发起呼吁》服务端的拍卖和响应》客户端重新载入页面(循环)

异步:客户端实时呼吁》服务端处理和响应》客户端得到响应后有些刷新页面

异步实现的重要是,XMLHttpRequest对象的面世

 

创建XHR对象

var request;
if(window.XMLHttpRequest){
     request = new XMLHttpRequest(); //IE7+,Firefox,Chrome,Opera,Safari
}else{
     request = new ActiveXObject("Microsoft.XMLHTTP");//IE6,IE5 
}

HTTP请求:无状态协议(不创设持久链接,服务器不保留记录是未曾回忆),它的过程如下7步:

1、建立TCP连接

2、浏览器向服务器发送请求命令

3、浏览器发送请求头音讯

4、服务器应答

5、服务器发送应答头信息

6、服务器想浏览器发送数据

7、服务器关闭TCP连接

 

HTTP请求的三结合:请求的章程(get或post等);请求的URL;请求头(环境信息,身份验证);请求体。

HTTP响应的组成:状态码(200,304等);响应头(服务器时间,其他音讯);响应体。

 

XHR对象的法子

open(method,url,async)//async同步仍然异步,默认异步为true

send(string)

 

监听请求的响应是否成功

var request = new XMLHttpRequest();
request.open("GET","get.php",true);
request.send();
request.onreadystatechange=function(){
    if(request.readyState===4 && request.status===200){
        request.responseText//取得响应体内容
    }      
}

用post提交表单时,需要在open和send中间添加一个设置

request.setRequesrHeader("Content-Type","application/x-www-form-rulencoded");

 

json解析两种方法:

var jsonData='{"staff":[{"name":"洪七公","age":70},{"name":"郭靖","age":35}]}'
var jsonObj=eval('('+jsonData+')');//容易产生错误,不会校验json是否合法,会直接执行json中的js语句
var jsonObj=JSON.parse(jsonData);//推荐

 

Jquery中的$.ajax([settings])

type:类型,“POST”或“GET”,默认“GET”

url:发送请求的地方

data:是一个目的,连同请求发送到服务器的数目

dataType:预期服务器重回的数据类型,一般为json,若不指定jquery将按照http包mime信息智能判断

success:方法,请求成功的回调函数,传入重返的数目及富含成功代码的字符串

error:方法,请求败北的回调函数,传入XMLHttpRequest对象

$.ajax({
   type:"GET",
   url:"sever.php?number"+$("#keyword").val(),
   dataType:"json",
   success:function(data){
        if(data.success){alert(data.msg)}
    },
    error:function(err){
        alert("错误状态码:"+err.status)
    }
})    

 

跨域

PHP 1

当协议、子域名、主域名、端口号中随机一个不同等时,都不失为不同域。

方法一:后端代理

方法二:JSONP(支持get,不支持post)

<!--在www.aaa.com页面中-->
<script>
function jsonp(json){
    alert(json["name"])
}
</script>
<script scr="http://www.bbb.com/jsonp.js"></script>
<!--在www.bbb.com页面中-->
jsonp({'name':"洪七公","age":70})

 方法三:HTML5提供的XHR2(ie10之下版本不帮忙)

服务端扩张如下(PHP)

header("Access-Control-Allow-Origin:*")
header("Access-Control-Allow-Methods:POST,GET")

 

相关文章