当前位置: 首页 > wzjs >正文

做时尚网站取个名字百度公司图片

做时尚网站取个名字,百度公司图片,官方网站建设报价表,网络维护工作总结范文&#x1f9e0; 一、JSONP 是什么&#xff1f; 项目内容&#x1f4cc; 全称JSON with Padding&#x1f4cd; 用途跨域请求数据的一种方式&#xff0c;绕过同源策略&#x1f4e6; 本质通过 <script> 标签加载远程 JS 文件&#xff0c;这个文件执行一个回调函数并传入数据 …

🧠 一、JSONP 是什么?

项目内容
📌 全称JSON with Padding
📍 用途跨域请求数据的一种方式,绕过同源策略
📦 本质通过 <script> 标签加载远程 JS 文件,这个文件执行一个回调函数并传入数据

🔍 二、JSONP 工作原理(层层递进)

  1. 定义全局回调函数

    function jsonpCallback(data) { console.log(data); }
    
  2. 创建 <script> 标签并设置 src

    script.src = 'http://example.com/api?callback=jsonpCallback';
    
  3. 服务器响应 JavaScript 代码

    jsonpCallback({ name: "Tom" });
    
  4. 浏览器执行返回的代码

    • 调用了你定义的 jsonpCallback 函数
    • 参数就是服务端返回的数据 ✅

❌ 三、常见错误

错误原因解决方式
meta charset="UTF - 8"有空格,浏览器不识别改为 UTF-8
回调函数未定义或冲突多个请求使用相同名字封装自动生成函数名
无法处理失败请求script 无 onerror 支持使用 timeout 模拟失败处理

🔧 四、封装 JSONP 工具函数(现代化 Promise 版)

✅ 功能要点:

  • 支持 URL 和参数拼接
  • 自动生成唯一回调名
  • 超时处理
  • 自动清理 script 和回调函数
  • 支持 Promise,可以用 .thenasync/await

✅ 封装代码:

function jsonp(url, params = {}, timeout = 5000) {return new Promise((resolve, reject) => {const callbackName = `jsonp_cb_${Date.now()}_${Math.random().toString().slice(2)}`;params.callback = callbackName;const queryString = Object.entries(params).map(([key, val]) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`).join('&');const script = document.createElement('script');script.src = `${url}?${queryString}`;script.async = true;window[callbackName] = (data) => {clearTimeout(timer);resolve(data);cleanup();};const timer = setTimeout(() => {reject(new Error('JSONP request timeout'));cleanup();}, timeout);function cleanup() {script.remove();delete window[callbackName];}document.body.appendChild(script);});
}

✅ 使用示例:

jsonp('http://example.com/api', { foo: 'bar' }).then(data => console.log('成功获取数据:', data)).catch(err => console.error('失败:', err));

🚀 五、JSONP 的优劣对比

优势局限
兼容老浏览器、实现跨域只能 GET 请求
使用简单安全性差(可能被注入恶意代码)
不依赖 XMLHttpRequest不支持 HTTP 状态码、错误处理有限

🧩 六、扩展方向(可选封装能力)

  • 支持取消请求(Abort)
  • 支持 callback 参数名自定义(如 cbfunc
  • 支持多个 JSONP 同时请求(自动管理全局空间)

http://www.dtcms.com/wzjs/324194.html

相关文章:

  • 北京网站建设公司哪个最好模板网站建站哪家好
  • 小型服务器做网站惠州百度关键词优化
  • 酒店网站开发朋友圈广告投放平台
  • 软件开发最新技术昆明seo技术培训
  • 汉口制作网站百度地图广告投放
  • 浙江做网站公司关键词优化收费标准
  • 石家庄搭建网站深圳seo优化seo优化
  • 做政府邀请函网站是哪个郑州做网站的大公司
  • 做网站没什么用啊老师别人强百度指数官网移动版
  • iis 建设网站代做百度收录排名
  • 怎么建立公众号写文章上海seo怎么优化
  • 长宁专业网站制作公司优化方法
  • 上海公司注册代理公司注册seo新人培训班
  • 做网站关键词软件沈阳百度推广优化
  • 河北省住房和城乡建设委员会官方网站网站建站设计
  • 国土局网站建设制度免费发布推广的平台
  • wordpress推广浏览插件网站seo排名优化工具
  • 外贸网站建站电话多少域名注册查询工具
  • 西安网站制作顶尖公南宁百度seo公司
  • 网站建设怎么找客户关键词免费网站
  • 网站建设外包需要多少钱谷歌推广网站
  • 定州网站建设兼职河南省人民政府
  • 网站图片翻页效果如何做如何开网站呢
  • 找北京赛车网站开发bt磁力狗
  • 哎呀哎呀视频在线观看浙江企业seo推广
  • win7 wordpressseo编辑培训
  • 东莞市南城装饰工程东莞网站建设起名最好的网站排名
  • 狮山网站建设公司友链通
  • 网页无法访问此页面宁阳网站seo推广
  • 建设部网站证书查询个人开发app最简单方法