Skip to content
Menu
Yuuk的博客
  • 首页
  • 前端技术
    • JavaScript
    • HTML & CSS
  • SEO
  • 设计
    • 素材分享
    • 设计教程
  • 随笔
Yuuk的博客

使用jsonp处理ajax跨域方法

Posted on 2015年6月16日 by yuuk

什么是跨域这里就不再解释了,想必跨域问题在日常工作中遇到的也不少,jQuery的ajax给出了很好的解决方案,跨域请使用JSONP,那么有人会问了,什么是JSONP呢?

我们来看一段网上duang的介绍~

JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。

ok,实际上JSONP只是一种解决方案,并非新的数据格式,其数据格式和JSON基本一样。

ajax使用JSONP的方法,代码如下:

$.ajax({
    type:"GET",
    url:'http://www.sucaijiayuan.com/jsonp.php',    
    data:{key:value},
    dataType:'jsonp',
    jsonp:'callback',
    jsonpCallback:"?"
    success:function(data){
        console.log(data);
    }
});

其中部分参数大家可能会有些陌生,咱们依次来解释一下。

jsonp:'callback'     规定传给后端的参数名,可以省略,默认值是 callback

jsonpCallback:"yourcallbackname"  规定后端输出数据外层包裹的名称,可以省略,默认值是jquery自动生成的一段以jquery开头的字符串

比如:后端返回普通json格式为:{site:"素材家园",url:"http://www.sucaijiayuan.com"},那么jsonp应该返回的数据必须是:jsonpCallback({site:"素材家园",url:"http://www.sucaijiayuan.com"}),这里的jsonpCallback就是ajax参数里面设置的jsonpCallback的值。如果后端返回的数据格式非这种格式时,虽然请求里面会有显示返回数据,但是ajax不执行success方法,这一点需要重点注意。

jsonp不支持post请求,就算设置type为post,jquery也会自动转化成get方法。

一段正常的jsonp请求应该是这种形式:http://www.sucaijiayuan.com/json.php?callback=yourcallbackname

这里的callback为ajax里面设置的jsonp的值,yourcallbackname为ajax里面设置的jsonpCallback的值

后端代码稍后补上~~~

打赏赞(1)分享

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

搜索

近期文章

  • 宝塔面板中使用docker部署nodejs应用
  • 如何将docker镜像上传到阿里云
  • React Native 报错 No bundle URL present 解决方法
  • axios 给每一个请求添加耗时统计
  • css filter属性导致fixed失效

标签

addEventListener ajax ajax跨域 chatAt css居中 DNS缓存 docker gulp ie7 json jsonp margin memcache mysql nodejs ps技巧 typescript void vpn vuejs wampserver webpack win10 XMLHttpRequest z-index 事件冒泡 事件绑定 内容发布时间 图片加载 大写 字符串 封装ajax 广告屏蔽 批量修改图层名称 水平垂直居中 注册码 特殊符号 百度 空元素 站长平台 网页快照 负边界 递减 随机数 首字母

友情链接

  • 蔡甸新闻网
©2025 Yuuk的博客 | 鄂ICP备13014750号-9