来源: 吾推网
发布时间: 2018-04-22
次浏览
一、最简单的方式
//1.创建ajax对象
var xhr = new XMLHttpRequest();
//1.创建ajax对象
var xhr = new XMLHttpRequest();
//2.连接服务器,第三参数为true表示异步
xhr.open('get', 'http://5tweb.cn?q=javascript&alt=json', true);
//指定类型
xhr.setRequestHeader("Content-Type","application/json");
//3.接收返回
xhr.setRequestHeader("Content-Type","application/json");
//3.接收返回
xhr.onreadystatechange = function() {
if (xhr.readyState == 4){
if ( xhr.status == 200 ){
alert( xhr.responseText );
}
}
}
//4.发送请求
xhr.send();
二、兼容IE6的方式
二、兼容IE6的方式
//1.创建ajax对象
var xhr=null;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else{//IE6
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
//2.连接服务器
xhr.open('get', 'http://5tweb.cn?q=javascript&alt=json', true);
//指定类型
xhr.setRequestHeader("Content-Type","application/json");
//3.接收返回xhr.setRequestHeader("Content-Type","application/json");
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
if ( xhr.status == 200 ){
alert( xhr.responseText );
}
}
}
//4.发送请求
xhr.send();
三、通过ajax上传附件
三、通过ajax上传附件
var fd = new FormData();
//file是通过<input type="file">获得到的文件
//file是通过<input type="file">获得到的文件
fd.append("file", file);
//1.创建ajax对象
var xhr = new XMLHttpRequest();
var xhr = new XMLHttpRequest();
//2.连接服务器
xhr.open('get', 'http://5tweb.cn?q=javascript&alt=json', true);
//3.发送请求
//3.发送请求
xhr.send(fd);
案例下载:https://github.com/coohui/serverTest/tree/master/ajax
//4.接收返回
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
if ( xhr.status == 200 ){
alert( xhr.responseText );
}
}
}
四、通过ajax下载附件
//1.创建ajax对象
var xhr = new XMLHttpRequest();
var xhr = new XMLHttpRequest();
//2.连接服务器,传送需要下载的附件id给后端
xhr.open('get', 'http://5tweb.cn?id=123', true);
//3.监听进度事件
xhr.addEventListener("progress", function (evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded/evt.total;
//此处写进度方法
}
},false);
//4.后台需通过流的形式返回给前端
xhr.responseType = "blob";
//5.接收返回//4.后台需通过流的形式返回给前端
xhr.responseType = "blob";
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
if ( xhr.status == 200 ){
var filename = ‘test’;
//成功函数
//成功函数
onSuccess(xhr.response);
if (typeof window.chrome !== 'undefined') {
// Chrome version
var link = document.createElement('a');
link.href = window.URL.createObjectURL(xhr.response);
link.download = filename;
link.click();
} else if (typeof window.navigator.msSaveBlob !== 'undefined') {
// IE version
var blob = new Blob([req.response], { type: 'application/force-download' });
window.navigator.msSaveBlob(blob, filename);
} else {
// Firefox version
var file = new File([req.response], filename, { type: 'application/force-download' });
window.open(URL.createObjectURL(file));
}
}else{
//失败走失败函数
//失败走失败函数
onFailure();
}
}
}
}
//6.发送请求
xhr.send();
五、把ajax封装成JQ的形式
五、把ajax封装成JQ的形式
function ajax(setting){
setting.type=setting.type||'get';
setting.contentType=setting.contentType||'application/x-www-form-urlencoded';
setting.async=setting.async||true;
var xhr=null;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject('Microsoft.XMLHTTP');
}
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
setting.success&&setting.success(xhr.responseText);
}else{
setting.error&&setting.error(null);
}
}
if(setting.type.toLowerCase()=='post'){
xhr.open(setting.type,setting.url,setting.async);
xhr.setRequestHeader('content-type',setting.contentType);
xhr.send(setting.data);
}else{
setting.url+= '?' + setting.data;
xhr.open(setting.type,setting.url,setting.async);
xhr.send();
}
}
//post方式
var data=JSON.stringify({
name:'lisi',
age:'34'
});
ajax({
type:'post',
url:'/serverTest/ajax/ajax.php',
data:data,
contentType:'application/json',
success:function(date){
document.getElementsByTagName('body')[0].innerHTML=date;
console.log(date);
},
error:function(msg){
document.getElementsByTagName('body')[0].innerHTML=msg;
console.log(msg);
}
});
后台部分:
后台部分:
//post方式获取
header('Content-type:application/json;charset=utf-8');
$raw = file_get_contents('php://input');
$data = json_decode($raw,true);
echo "你的名字:".$data['name'].",年龄:".$data['age'];
//get方式获取
//echo "你的名字:".$_GET['name'].",年龄:".$_GET['age'];