作者:webkaka 字体:[增加 减小] 类型:转载 时间:2017-09-23 我要评论
通过JQuery可以跨域获取JSON数据,但必须弄清楚的是,JQuery不可以跨域获取任意JSON格式的数据,必须要通过服务端输出特定的针对JQuery跨域读取的JSON数据。你可能目前对此仍然毫无了解,没关系,本文将以最简单易懂的方式介绍这个技术,相信人人都容易读懂,并能够实际应用。
JQuery获取同域的JSON数据
首先引用jQuery库文件:
<script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js"></script>
jQuery代码:
- var url="http://localhost:8000/user.php";
- $(function(){
- $.getJSON(url,function(data){
- alert (data.name);
- })
- });
服务器代码(PHP):
- <?php
- header('Content-Type:text/html;Charset=utf-8');
- $arr = array(
- "name" => "xiaoming",
- "pass" => "123456"
- );
- echo json_encode($arr);
- ?>
服务器返回字符串:
{"name":"xiaoming","pass":123456}
JQuery获取跨域的JSON数据
首先引用jQuery库文件:
<script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js"></script>
jQuery代码:
- var url="http://localhost:8000/user.php?jsoncallback=?";
- $(function(){
- $.getJSON(url,function(data){
- alert (data.name);
- })
- });
服务器代码(PHP):
- <?php
- header('Content-Type:text/html;Charset=utf-8');
- $arr = array(
- "name" => "xiaoming",
- "pass" => "123456"
- );
- echo $_GET['jsoncallback']."(".json_encode($arr).")";
- ?>
服务器返回字符串(需要传入参数“jsoncallback”):
jQuery19003894091040769696_1505708469340({"name":"xiaoming","pass":123456})
说明,jQuery传入值每次都不一样。
JQuery获取同域和跨域JSON数据的区别
从上述两个例子看到,JQuery获取同域和跨域JSON数据的区别有两点:
1)jQuery写法不同,跨域时要多加一个参数“jsoncallback=?”
2)服务器端返回字符串的写法不同,跨域时需要用到“'jsoncallback'”的传入值,构造的字符串格式是:jsoncallback传入值(原JSON字符串),注意要用括号把原JSON字符串包住。
总结
通过本文介绍,大家都应该明白了,要jQuery跨域读取JSON数据,首先需要在服务器端构造一个特殊的JSON字符串,否则是读取不了的,好在,构造方法十分简单,文中例子一看便懂。
jQuery + Ajax 获得跨域JSON数据
前面的例子用的是 $.getJSON 来获得跨域JSON数据,其实我们用 $.ajax 的方法也同样可以的。
首先引用jQuery库文件:
<script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js"></script>
jQuery代码:
- <script type="text/javascript">
- $(function() {
- $.ajax({
- type: 'get',
- url: 'http://localhost:8000/user.php?jsoncallback=?',
- dataType: 'jsonp',
- jsonp: "jsoncallback",
- success: function(data) {
- alert("用户名:" + data.name + " 密码:" + data.pass);
- }
- });
- })
- </script>
特别注意,dataType 是 jsonp 而不是 json 。
您可能感兴趣的文章:
- 详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
- jQuery中$.ajax()和$.getJson()同步处理详解
- jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结