AJAX与JSONP的原生js和jquery写法汇总

本文书写的内容是能实现基本功能的ajax和jsonp,可以用于理解ajax和jsonp的工作原理。

一、原生写get

//1.创建xml对象
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = callback;//注册回调函数
//2.初始化
xhr.open('GET' , '接口地址?数据名='+数据+'&数据名='+数据,true);//true代表异步
//3.发送
xhr.send();//异步下send函数立即完成执行;同步时,send这名话会在服务器端数据回来后才执行完

//4.处理相应结果
var callback = function(){
  if (xhr.readyState === 4){
    //判断响应码
    if((xhr.status >= 200 && xhr.status<300)||xhr.status == 304){
      //成功
      let resoonseTest = xhr.responseText;//获取服务器返回数据
    }else{
      //失败
    }
  }
};

二、jquery写get

1.回调形式

$.ajax({
  url:'接口地址',     //请求地址
  type:'get',        //请求方式
  async:true,        //异步
  dataType:'json',   //数据格式
  data:{name:123},//发送数据
  success:function(getdata){
    //请求成功的回调
  },
  error:function(){
    //请求失败的回调
  },
  beforeSend:function(){
    //发送前
  },
  complete:function(){
    //结束
  }
});

2.非回调形式

$.ajax({
  url:'接口地址',     //请求地址
  type:'get',        //请求方式
  async:true,        //异步
  dataType:'json',   //数据格式
  data:{name:123},//发送数据
  }).done(function(getdata){
    //请求成功
  }).fail(function(){
    //请求失败
  }).always(function(){
    //总是执行
  });

3.简写形式

//API:$.get(url, [data], [callback], [type])
$.get("接口地址", { name:123 },
          function(data){
            //请求成功
});

三、原生写post

//1.创建xml对象
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = callback;//注册回调函数
//2.初始化
xhr.open('POST' , '接口地址',true);//true代表异步
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//设置http的表头
//3.发送
xhr.send('数据名='+数据);//异步下send函数立即完成执行;同步时,send这名话会在服务器端数据回来后才执行完

//4.处理相应结果
var callback = function(){
  if (xhr.readyState === 4){
    //判断响应码
    if((xhr.status >= 200 && xhr.status<300)||xhr.status == 304){
      //成功
      let resoonseTest = xhr.responseText;//获取服务器返回数据
    }else{
      //失败
    }
  }
};

四、jquery写post

1.回调形式

$.ajax({
  url:'接口地址',     //请求地址
  type:'post',        //请求方式
  async:true,        //异步
  dataType:'json',   //数据格式
  data:{name:123},//发送数据
  success:function(getdata){
    //请求成功的回调
  },
  error:function(){
    //请求失败的回调
  },
  beforeSend:function(){
    //发送前
  },
  complete:function(){
    //结束
  }
});

2.非回调形式

$.ajax({
  url:'接口地址',     //请求地址
  type:'post',        //请求方式
  async:true,        //异步
  dataType:'json',   //数据格式
  data:{name:123},//发送数据
  }).done(function(getdata){
    //请求成功
  }).fail(function(){
    //请求失败
  }).always(function(){
    //总是执行
  })
  
;

3.简写形式

//API:jQuery.post(url, [data], [callback], [type])
$.post("接口地址", { name:123 },
          function(data){
            //请求成功
}, "json");

五、JSONP跨域

1.原生jsonp

getjsonp('发送数据',callback);
function getjsonp(senddata,ca){//data是发送的数据,ca是回调函数
  let script = document.createElement('script');//创建script节点
  script.src = "请求文件地址"+"?callback="+ca+'&发送的数据名='+senddata;//设置请求地址和数据
  document.getElementsByTagName('head')[0].appendChild(script);//添加到head上面
  script.parentNode.removeChild(script);//删除节点
};
function callback(getdata){//getdata是从服务器得到的数据
  //回调函数,可以对得到的数据进行处理
};

2.jquery的jsonp-回调形式

$.ajax({
  url:'接口地址',     //请求地址
  type:'get',        //请求方式,只能写get
  async:true,        //异步
  data:{name:123},//发送数据
  dataType:'jsonp',   //数据格式
  jsonp:"callback",//相当于url里面的callback
  jsonpCallback:"ca",//相当于url里面的ca
  success:function(getdata){
    //请求成功的回调
  },
  error:function(){
    //请求失败的回调
  }
});

3.jquery的jsonp-简写非回调形式

$.ajax({
  url:"请求文件地址"+"?callback="+ca+'&发送的数据名='+senddata,     //请求地址
  type:'get',        //请求方式,只能写get
  async:true,        //异步
  dataType:'json',   //数据格式
  }).done(function(getdata){
    //请求成功
  }).fail(function(){
    //请求失败
  }).always(function(){
    //总是执行
  })
  
;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值