• 原生JS实现$.ajax


     1     function ajax(obj){
     2             obj=obj||{};
     3             obj.type=(obj.type||'GET').toUpperCase();
     4             obj.dataType=obj.dataType||'json';
     5             var params=formatParams(obj.data);//参数格式化
     6 
     7             //step1:兼容性创建对象
     8             if(window.XMLHttpRequest){
     9                 var xhr=new XMLHttpRequest();
    10             }
    11             else{
    12                 var xhr=new ActiveXObject('Microsoft.XMLHTTP');
    13             }
    14 
    15             //step4: 接收
    16             xhr.onreadystatechange=function(){
    17                 if(xhr.readtState==4){
    18                     if(xhr.state>=200 && xhr.status<300){
    19                         obj.success&&obj.success(xhr.responseText,xhr.responseXML);
    20                     }
    21                     else{
    22                         obj.error&&obj.error(xhr.status);
    23                     }
    24                 }
    25             }
    26 
    27             //step2 step3:连接 和 发送
    28             if(obj.type=='GET'){
    29                 xhr.open('GET',obj.url+'?'+params,true);
    30                 xhr.send(null);
    31             }
    32             else if(obj.type=='POST'){
    33                 xhr.open('POST',obj.url,true);
    34                 //设置请求头,以表单形式提交数据
    35                 xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    36                 xhr.send(params);
    37             }
    38 
    39 
    40             //辅助函数,格式化参数
    41             function formatParams(data){
    42                 var arr=[];
    43                 for(var name in data){
    44                     arr.push(encodeURICompontent(name)+"="+encodeURICompontent(data[name]));
    45                 }
    46                 //设置随机数,防止缓存
    47                 arr.push("t="+Math.random());
    48                 return arr.join("&");
    49             }
    50 
    51            }

    使用:

    1 ajax({
    2     url:"www.baidu.com",
    3     type:"GET",
    4     dataType:"json",
    5     data:{a:"123",b:"456"},
    6     success:function(response.xml){//todo something},
    7     error:function(status){//todo something}  
    8 })
  • 相关阅读:
    软件测试相关面试
    GET和POST两种基本请求方法的区别
    Fiddler的安装与使用
    idea与eclipse项目相互导入的过程
    Selenium 学习笔记
    面试相关的案例
    idea编译启动报错
    window安装redis无法启动报错
    【001】接口测试-常用工具介绍和使用
    pyinstaller 打包exe相关
  • 原文地址:https://www.cnblogs.com/dll-ft/p/5846977.html
Copyright © 2020-2023  润新知