只需要将dataType设置成jsonp就可以进行跨域请求了 。在success里我们能接收到来自服务端的响应:
Copy{name: "52fhy", age: "22"}DEMO: Zepto jsonp demo
通过console控制台,可以看到请求信息:
CopyRequest URL:http://demo.52fhy.com/jsonp/handJsonp.php?_=1460899828609&callback=jsonp1Request Method:GETStatus Code:200 OKjQuery/Zepto为我们封装好了回调函数,一般情况下不需要我们单独去写,如果你不想在success中处理,想单独写处理函数,那么可以通过设置这2个参数来实现:
Copyjsonp: "callback",//传递给服务端的回调函数名称参数,如果不设置此项,则默认是"callback"jsonpCallback: "handler",//传递给服务端的回调函数名称,如果不设置此项,jQuery默认是形如"jQuery18308539637457579374_1460898291266"的由jQuery自动生成的函数名称,Zepto默认是`jsonp1`如果是zepto,可以在success回调里面使用console.log(jsonp1),发现jsonp1()方法是存在的 。
需要注意的是:
1.JSONP虽然看起来很像一般的ajax请求,但其原理不同,JSONP是通过<script>标签的动态加载来实现的跨域请求,而一般的ajax请求是通过XMLHttpRequest对象进行;参考1、浏览器同源政策及其规避方法 - 阮一峰的网络日志
2.JSONP不是一种标准协议,其安全性和稳定性都不如 W3C 推荐的 CORS;
3.JSONP不支持POST请求,即使把请求类型设置为post,其本质上仍然是一个get请求 。
http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html
2、跨域资源共享 CORS 详解 - 阮一峰的网络日志
http://www.ruanyifeng.com/blog/2016/04/cors.html
3、说说JSON和JSONP,也许你会豁然开朗_知识库_博客园
http://kb.cnblogs.com/page/139725/
4、跨域解决方案二:使用JSONP实现跨域 - choon - 博客园
http://www.cnblogs.com/choon/p/5393682.html
5、JSON-P: Safer cross-domain Ajax with JSON-P/JSONP
【JSONP浅析】http://json-p.org/
本文首发于公众号"飞鸿影的博客(fhyblog)",欢迎关注 。博客地址:https://52fhy.cnblogs.com(本文完)
推荐阅读
- Java 线程池 ThreadPoolExecutor 八种拒绝策略浅析
- 浅析凉茶的历史及起源
- Android系统架构浅析
- 浅析浏览器缓存
- 浅析普洱熟茶各种不正常味道的原因
- FLV协议5分钟入门浅析
- 锁寂峨眉春欲绝,心上愁云千重叠;春词七首,浅析如何填作蝶恋花
- 浅析紫砂陶生产工艺
- 浅析scrapy与scrapy_redis区别
- 三种不同风格的紫砂器浅析
