jsonp跨域请求实现获取Google搜索结果
2014-11-02 20:55
751 查看
【jsonp跨域请求原理】
1)输入带参函数url
2)返回函数带实参数据
2)包装函数使用引入js到本地
3)执行带参自定义函数解析相关数据
【以Google api搜索为例】
① 首先我们分析url
有两个参数是我们需要关心的
一个是 q :我们要查询的数据
callback :我们返回调用的函数名
然后我们直接 地址栏输入 该地址 回车
② 分析返回的数据
然后看到结果如下
对结果而言我们看到的是
返回结果是一个:
函数(json对象);
这就是带参数的回调函数,我们要取到数据
那么就得先风装
<script>delres(json_obj);</script>
然后写入本地dom 那么他就会自动执行delres函数并携带数据
③ 根据上述的结构 我们只要在本地
写一个与回调函数同名(回调函数名是自定义的)的函数取出数据就可以了
【完整代码如下】
1)输入带参函数url
2)返回函数带实参数据
2)包装函数使用引入js到本地
3)执行带参自定义函数解析相关数据
【以Google api搜索为例】
① 首先我们分析url
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=key&callback=delres
有两个参数是我们需要关心的
一个是 q :我们要查询的数据
callback :我们返回调用的函数名
然后我们直接 地址栏输入 该地址 回车
② 分析返回的数据
然后看到结果如下
delres( {"responseData": { "results":[ {"GsearchResultClass":"GwebSearch", "unescapedUrl":"http://en.wiktionary.org/wiki/%E4%BA%94", "url":"http://en.wiktionary.org/wiki/%25E4%25BA%2594", "visibleUrl":"en.wiktionary.org", "cacheUrl":"http://www.google.com/search?q\u003dcache:iPJPy6Sdd7YJ:en.wiktionary.org", "title":"\u003cb\u003e五\u003c/b\u003e- Wiktionary", "titleNoFormatting":"五- Wiktionary", "content":"One possibility is that \u003cb\u003e五\u003c/b\u003ewas originally ..."<span style="font-family: Arial, Helvetica, sans-serif;"> ...</span>
<pre name="code" class="javascript"><pre name="code" class="javascript"> "responseStatus": 200 } } )
对结果而言我们看到的是
返回结果是一个:
函数(json对象);
这就是带参数的回调函数,我们要取到数据
那么就得先风装
<script>delres(json_obj);</script>
然后写入本地dom 那么他就会自动执行delres函数并携带数据
③ 根据上述的结构 我们只要在本地
写一个与回调函数同名(回调函数名是自定义的)的函数取出数据就可以了
【完整代码如下】
<!doctype html> <html> <head> <title>jsonp的跨域请求</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> function loadres(){ var rescot = document.getElementById('search'); var key = rescot.value; var url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='+key+'&callback=delres'; var scr = document.createElement('script'); scr.setAttribute('type','text/javascript'); scr.setAttribute('src',url); document.getElementsByTagName('head')[0].appendChild(scr); } function delres(resobj){ var res = resobj.responseData.results; var str = ''; for(var i in res){ str +='<p><a href="'+res[i].url+'">'+res[i].title+'</a></p>'; str +='<p>'+res[i].content+'</p>'; } var resdiv = document.getElementById('res'); resdiv.innerHTML = str; } </script> <style type="text/css"> </style> </head> <body> <div> 输入搜索内容:<input type="text" id="search"/><br/> <input type="button" value="搜索" onclick="loadres();"/> </div> <div id="res"></div> </body> </html>
相关文章推荐
- JSONP跨域请求+简答实现百度搜索
- 跨域请求(使用jsonp实现跨域请求)百度地图api证逆地址解析获取周边信息(pois)
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- 用jQuery AJAX发出JSONP请求实现跨域获取数据
- 通过jsonp获取json数据实现AJAX跨域请求
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- Django 实现组合条件搜索、jsonp跨域请求
- jsonp实现应用的跨域请求进行数据交互
- 根据查询的关键字,实现获取百度指定页数的搜索结果的信息(网页地址,标题,摘要,并有排序的说明)
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码】
- AJAX 跨域请求 - JSONP获取JSON数据
- AJAX 跨域请求 - JSONP获取JSON数据
- JSON和JSONP有哪些区别,PhoneGap跨域请求如何实现
- AJAX 跨域请求 - JSONP获取JSON数据
- 用perl获取google搜索的结果
- SON和JSONP有哪些区别,PhoneGap跨域请求如何实现
- jquery+ajax+jsonp实现跨域请求
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- AJAX 跨域请求 - JSONP获取JSON数据
- AJAX 跨域请求 - JSONP获取JSON数据