• jsonp解决跨域问题


    日常开发网页中,时常遇到跨域问题,通常解决办法:后端提供的接口支持jsonp格式,前端采用dataType:jsonp。

    一:Jquery封装的AJAX,dataType:jsonp格式的方法:

     1 $.ajax({
     2     type : "get",
     3     async:false,
     4     url : "",
     5     dataType : "jsonp",
     6     jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
     7     jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,但是不能为空
     8     success : function(data){
    10        console.log(data)     27     },
    28     error:function(){
    29        alert('fail');
    30     }
    31 })

    二:使用原生js封装jsonp接口,同时应用Promise对象,可以链式调用

    window.STATE_CALLBACK = {
      uid:new Date - 0
    }
    function jsonp(url,param,callbackName){
      return new Promise(function(resolve,reject){
        callbackName = callbackName || 'jsonpCallback'
        var script = document.createElement('script')
        script.setAttribute('async','async')
        var name = ['ymwangel',STATE_CALLBACK.uid++].join('')
        param[callbackName] = ['STATE_CALLBACK.',name].join('')
        script.src = paramConcatUrl(url,param)
        document.body.appendChild(script)
        STATE_CALLBACK[name] = function(data){
          delete STATE_CALLBACK[name]
          document.body.removeChild(script)
          resolve(data)
        }
        script.onerror = function(e){
          reject(e)
        }
      })
    }

    原生js封装jsonp的函数,更能体现jsonp实现跨域的原理:在页面中创建script标签,设置script的async、src属性,然后,将script标签插入到body中,最后当响应请求成功,获取到返回的数据后,删除之前插入的script标签即可。

  • 相关阅读:
    事件使用(转 )
    使用Dotfuscator 进行.Net代码混淆 代码加密的方法
    Git分布式版本控制系统学习笔记
    免费SVN服务器笔记
    如何设置mysql远程访问及防火墙设置
    c# GridControl怎么换行
    模拟Post登陆带验证码的网站
    c#控制打印机杂项
    ssh 自动登录
    mysql 使用记号
  • 原文地址:https://www.cnblogs.com/ymwangel/p/8203012.html
Copyright © 2020-2023  润新知