分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

jsonp解决跨域问题

发布时间:2023-09-06 01:34责任编辑:胡小海关键词:jsjson跨域

日常开发网页中,时常遇到跨域问题,通常解决办法:后端提供的接口支持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标签即可。

jsonp解决跨域问题

原文地址:https://www.cnblogs.com/ymwangel/p/8203012.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved