jsonp跨域访问获取数据(使用jquery)
2012-06-26 15:15
591 查看
最近要做一个hybrid移动应用,数据库在团队的服务器空间,获取数据库的数据就要跨域了。跨域的话,首先就考虑到了jsop。上网搜了很多资料终于知道怎么跨域了。
首先,我们可能用过这样的方式引用其他域javascript脚本
其实jsonp的原理跟这个差不多的。jsonp跨域,服务器输出的不是json数据,而是javascript脚本。
好的,现在就看一下用jquery跨域访问的例子
服务器端index.php(其它域:www.conciz.com)
客户端调用 client.html
也许你会问callback=?是什么意思,其实?是一个占位符的,jquery会自动生成唯一的一个函数名代替?传递到服务端,而这个函数名就是getJSON方法第二个参数(回调函数)的函数名。仔细看index.php最后的输出语句:echo $callback.'('.$json.')'; 这是输出一个javascript的语句,是调用callback函数。假设传递过去的函数名是getData(其实jquery生成的是Jquery加一串数字),还有你就把$json当做一个普通的参数。这样输出的是getData($json);这样话客户端的代码相当于下面的:
首先,我们可能用过这样的方式引用其他域javascript脚本
<script type="text/javascript" src="http://www.conciz.com/index.php?name=icebian"></script>
其实jsonp的原理跟这个差不多的。jsonp跨域,服务器输出的不是json数据,而是javascript脚本。
好的,现在就看一下用jquery跨域访问的例子
服务器端index.php(其它域:www.conciz.com)
<?php //很单纯的变量 $name="Allenice"; $callback="jsonp"; //通过get的方式获得参数 if(isset($_GET["name"])) $name=$_GET["name"]; if(isset($_GET["callback"])) $callback=$_GET["callback"]; //封装成json数据 $json='{"name":"'.$name.'"}'; //输出javascript脚本,调用callback echo $callback.'('.$json.')'; ?>
客户端调用 client.html
<!DOCTYPE html> <html> <head> <title>测试ajax</title> <script src="jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $.getJSON("http://www.conciz.com/index.php?name=Allenice2&callback=?", function (data) { alert(data.name); }) }) </script> </head> <body> </body> </html>
也许你会问callback=?是什么意思,其实?是一个占位符的,jquery会自动生成唯一的一个函数名代替?传递到服务端,而这个函数名就是getJSON方法第二个参数(回调函数)的函数名。仔细看index.php最后的输出语句:echo $callback.'('.$json.')'; 这是输出一个javascript的语句,是调用callback函数。假设传递过去的函数名是getData(其实jquery生成的是Jquery加一串数字),还有你就把$json当做一个普通的参数。这样输出的是getData($json);这样话客户端的代码相当于下面的:
<!DOCTYPE html> <html> <head> <title>测试jsonp</title> <script src="jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $.getJSON("http://www.conciz.com/jqm/index.php?name=Allenice2&callback=?", function (data) { alert(data.name); }) }) </script> <script type="text/javascript"> //getData的定义就是getJson的第二个参数,getJson还把json数据转化成javascript的对象 getData({name:"Allenice2"}); </script> </head> <body> </body> </html>
相关文章推荐
- jQuery使用JSONP实现跨域获取数据的三种方法详解
- jQuery使用JSONP实现跨域获取数据的三种方法详解
- 使用JSONP,jQuery的ajax跨域获取json数据
- JSONP跨域获取JSON数据(含jQuery方法)
- extJs中通过jQuery的ajax进行跨域(即jsonp进行跨域)获取数据
- 使用Jsonp解决跨域数据访问问题
- jQuery使用ajax跨域获取数据
- Jquery Jsonp跨域提交表单获取返回数据
- 普元EOS中, 子系统和portal不在同一个域中,使用jquery的jsonp来解决portal跨域访问
- jquery 跨域访问jsonp格式的数据
- jQuery使用ajax跨域获取数据
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- jQuery使用ajax跨域获取数据
- jquery $.ajax+php使用jsonp处理数据时,前端success :function无法获取服务器返回数据
- AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据
- jQuery使用ajax跨域获取数据
- jquery使用jsonp解决json跨域访问的问题
- jQuery使用ajax跨域请求获取数据
- JSONP跨域获取JSON数据(含jQuery方法)——李帅醒博客
- 使用jQuery-AJAX–读取获得跨域JSONP数据的示例