var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("div").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","forwifestudy/testforget.php?info=123",true);
xmlhttp.send();
注意:除了IE5和IE6之外的任意浏览器都可以创建一个XHR对象,在IE中,XHR是作为一个ActiveX对象实现的,在IE中这样创建对象:
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
new一个XHR对象之后,使用onreadystatechange函数来监听readyState属性的变化;
readyState属性表名了对象连接的状态:
0:未经初始化的,open还没有调用;
1:服务器连接已建立,open已经调用了;
2:请求已接受,也就是收到头信息了;
3:请求处理中,也就是收到响应主体了;
4:请求已完成,且响应就绪,也就是响应完成了;
请求成功之后我们就可以干一些事情了,比如讲服务器的相应数据显示出来等。(responseText是获取字符串形式的相应数据,responseXML是获取XML形式的相应数据)
document.getElementById("div").innerHTML=xmlhttp.responseText;
get发送请求变量名和值是写在url中的,像这样
xmlhttp.open("GET","forwifestudy/testforget.php?info=123",true);
var request=new XMLHttpRequest();
request.onreadystatechange=function(){
if(request.readyState===4 &&request.status===200){
document.getElementById("div").innerHTML=request.responseText;
}
else{
}
}
request.open("POST","forwifestudy/testforpost.php",true);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.send("info=123");
注意:post请求发送的数据并不是写在url中的,是嵌入到HTTP请求体中的,下面这句话必须在.open 和 .send中间
request.open("POST","forwifestudy/testforpost.php",true);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.send("info=123");
$.get("forwifestudy/testforget.php",{info:123},function(data){
//请求成功时调用回调函数
alert(data);
});
$.post("forwifestudy/testforpost.php",{info:123},function(data,status){
alert("数据"+data+"\n状态"+status);
},"json");
和get请求一样,只是在后面加上数据的格式,比如“json”
$.ajax({
url:"forwifestudy/testforget.php?info=123",
datatype:"json",
type:"GET",
success:function(e){alert(e);},
error:function(e){alert("失败");}
});
有成功时的回调函数和失败时的回调函数;
$.ajax({
url:"forwifestudy/testforpost.php",
datatype:"json",
type:"post",
data:{info:123},
success:function(e){ //成功后回调
alert(e);
},
error:function(e){ //失败后回调
alert(e);
} });
这两中方式发送请求差别在于,变量名和值的位置,根据type的类型(get还是post)
header("Access-Control-Allow-Origin: *"); // 允许任意域名发起的跨域请求
header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With');
header("Access-Control-Allow-Origin: http://a.com"); // 允许a.com发起的跨域请求
//如果需要设置允许所有域名发起的跨域请求,可以使用通配符 *