随身笔记
随身笔记

原生ajax笔记

_ajax笔记.txt

 //以下是同步
 var xhr=new XMLHttpRequest(); //用ajax就要创建一个XHR对象,这个不兼容IE6
 jQuery(document).click(function(){
  xhr.open('get','1.php?'+Math.random(),false); //get方式,请求地址1.php,同步。这步只是负责工作前的准备,没真正启动ajax。
  xhr.send(null);//如果有数据顺便发送给服务器就填写,如果没有也必须要写null,真正启动ajax
  if(xhr.status==200){ //要想获取服务器传过来的数据就要判断,是否请求成功
    document.title=xhr.responseText;//从服务器获取到的数据
  }else{
    document.title='出错';
  }
 });

 

//以下是异步
 var xhr=new XMLHttpRequest(); //用ajax就要创建一个XHR对象,这个不兼容IE6
 jQuery(document).click(function(){
  xhr.onreadystatechange=function(){
    if(xhr.status==200 && xhr.readyState==4){ //要想获取服务器传过来的数据就要判断,是否请求成功
      document.title=xhr.responseText;//从服务器获取到的数据
      // xhr.getAllResponseHeaders(); //获取到响应的全部信息
      // xhr.getResponseHeader('Content-Type'); //获取 Content-Type信息
    }else{
        document.title='出错';
    }
  }
  xhr.open('get','1.php?'+Math.random(),true);
  xhr.send(null);//如果有数据顺便发送给服务器就填写,如果没有也必须要写null,真正启动ajax
  //xhr.abort() //这里取消异步
 });

 

//异步,用post方式,向服务器传递数据
 var xhr=new XMLHttpRequest(); //用ajax就要创建一个XHR对象,这个不兼容IE6
 jQuery(document).click(function(){
   xhr.onreadystatechange=function(){
     if(xhr.status==200 && xhr.readyState==4){ //要想获取服务器传过来的数据就要判断,是否请求成功
          document.title=xhr.responseText;//从服务器获取到的数据
       // xhr.getAllResponseHeaders(); //获取到响应的全部信息
       // xhr.getResponseHeader('Content-Type'); //获取 Content-Type信息
     }else{
          document.title='出错';
     }
   }
   xhr.open('post','1.php?'+Math.random(),true);
   xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //模拟表单提交,不然用post提交数据给服务器是接受不到数据的
   xhr.send('name=xgllseo&age=100');//这些写你要传递的数据,如果没有也必须要写null,真正启动ajax
 });

 

 //获取json数据
 var xhr=new XMLHttpRequest(); //用ajax就要创建一个XHR对象,这个不兼容IE6
 jQuery(document).click(function(){
     xhr.onreadystatechange=function(){
       if(xhr.status==200 && xhr.readyState==4){ //要想获取服务器传过来的数据就要判断,是否请求成功
          document.title=JSON.parse(xhr.responseText);//获取json数据
       }else{
          document.title='出错';
       }
      }
      xhr.open('get','1.json?'+Math.random(),true);
      xhr.send('name=xgllseo&age=100');//这些写你要传递的数据,如果没有也必须要写null,真正启动ajax
 });

 

 

//跨域 并发送数据给服务器
function ajax(params) { 
 params = params || {}; 
 params.data = params.data || {}; 
 var json = params.jsonp ? jsonp(params) : json(params); 
 // jsonp请求 
 function jsonp(params) { 
 //创建script标签并加入到页面中 
 var callbackName = params.jsonp; 
 var head = document.getElementsByTagName('head')[0]; 
 // 设置传递给后台的回调参数名 
 params.data['callback'] = callbackName; 
 var data = formatParams(params.data); 
 var script = document.createElement('script'); 
 head.appendChild(script); 
 //创建jsonp回调函数 
 window[callbackName] = function(json) { 
   head.removeChild(script); 
   clearTimeout(script.timer); 
   window[callbackName] = null; 
     params.success && params.success(json); 
   }; 
  //发送请求 
 script.src = params.url + '?' + data; 
 //为了得知此次请求是否成功,设置超时处理 
  if(params.time) { 
    script.timer = setTimeout(function() { 
      window[callbackName] = null; 
      head.removeChild(script); 
      params.error && params.error({ 
        message: '超时' 
      }); 
    }, time); 
   } 
 }; 
 //格式化参数 
 function formatParams(data) { 
 var arr = []; 
 for(var name in data) { 
 arr.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name])); 
 }; 
 // 添加一个随机数,防止缓存 
 arr.push('v=' + random()); 
 return arr.join('&'); 
 } 
 // 获取随机数 
 function random() { 
   return Math.floor(Math.random() * 10000 + 500); 
 }
}



ajax({ 
 url: 'test', // 请求地址
 jsonp: 'jsonpCallback', // 采用jsonp请求,且回调函数名为"jsonpCallbak",可以设置为合法的字符串
 data: {'b': '异步请求'}, // 传输数据
 success:function(res){ // 请求成功的回调函数
   console.log(res); 
 },
 error: function(error) {} // 请求失败的回调函数
});



服务器设置:
$data='[{name:"chenge"},{age:24}]'; //这里就是要返回给客户端的数据,必须还是json格式的,不然就出错。之前设置了也必须设置dataType:"jsonp"
$str=$_GET['callback'].'('.$data.')';
echo $str;

 

 

 

随身笔记

原生ajax笔记
_ajax笔记.txt //以下是同步 var xhr=new XMLHttpRequest(); //用ajax就要创建一个XHR对象,这个不兼容IE6 jQuery(document).click(function(){ xhr.open('get','1.php?'+Math.r…
扫描二维码继续阅读
2016-03-16