扫码关注官方订阅号
一个维基百科API的入口: http://www.mediawiki.org/wiki...功能:通过输入的文字进行搜索,返回搜索结果。
先查ajax,但是ajax不能跨域,然后查到了jsonp,但是jsonp是利用了浏览器允许跨域引用JavaScript资源所以需要js文件?但是只有一个API入口..
闭关修行中......
jsonp也是需要服务端来配合的,如果他给你的服务端不是jsonp的格式你也没办法使用jsonp。jsonp你可以这样理解:打个比方以前使用ajax你发送数据给http://xxx.xxx/request这个地址,服务器接收数据,然后返回给你json:
//ajax的返回json数据格式: {'status':'success'}
但是因为ajax一般情况下(注意是一般情况下)无法跨域,所以聪明的程序员就想到了jsonp方式。因为浏览器不限制script标签的跨域,所以你可以新建立一个script标签,script的src还是你要请求的地址
<script> function myfun(json){/*提前准备好一个function*/} </script> <script src="http://xxx.xxx/request"></script>
然后在你请求这个地址后服务器包装一下给你返回:
//jsonp的返回json数据的格式则为: myfun({'status':'success'}) //浏览器因为是当script来加载进来的,所以会立刻执行你提前定义好的myfun这个function //真正的jquery中的jsonp这个函数和函数名都是动态生成的,服务器接收到你的函数名自动拼接在前面才行
所以如果你的api接口没有提供jsonp的话你也无法使用jsonp,同时jsonp因为是用script的src方式引入的,所以如果要传参只能是get方式如:
<script src="http://xxx.xxx/request?key1=value1&key2=value2"></script>
当然上面只是jsonp的大致原理的解析,jquery等库已经封装好了jsonp的使用方式,如果你的api接口确实是返回jsonp格式的话那你就可以直接使用jquery的jsonp方式来请求,具体可以参阅jquery文档。
前面说到一般情况下ajax是无法跨域的,但是实际上服务器经过设置或者代码配置后使用CORS也可以让ajax来跨域的,浏览器的支持情况也还不错:http://caniuse.com/#search=CORS这里有篇文章有兴趣可以了解一下:http://www.ruanyifeng.com/blo...
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
jsonp也是需要服务端来配合的,如果他给你的服务端不是jsonp的格式你也没办法使用jsonp。
jsonp你可以这样理解:
打个比方以前使用ajax你发送数据给http://xxx.xxx/request这个地址,服务器接收数据,然后返回给你json:
但是因为ajax一般情况下(注意是一般情况下)无法跨域,所以聪明的程序员就想到了jsonp方式。因为浏览器不限制script标签的跨域,所以你可以新建立一个script标签,script的src还是你要请求的地址
然后在你请求这个地址后服务器包装一下给你返回:
所以如果你的api接口没有提供jsonp的话你也无法使用jsonp,同时jsonp因为是用script的src方式引入的,所以如果要传参只能是get方式如:
当然上面只是jsonp的大致原理的解析,jquery等库已经封装好了jsonp的使用方式,如果你的api接口确实是返回jsonp格式的话那你就可以直接使用jquery的jsonp方式来请求,具体可以参阅jquery文档。
前面说到一般情况下ajax是无法跨域的,但是实际上服务器经过设置或者代码配置后使用CORS也可以让ajax来跨域的,浏览器的支持情况也还不错:http://caniuse.com/#search=CORS
这里有篇文章有兴趣可以了解一下:http://www.ruanyifeng.com/blo...