JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码


Posted in jQuery onSeptember 23, 2017

通过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 相关文章推荐
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
利用jquery如何从json中读取数据追加到html中
Dec 01 jQuery
jQuery实现的电子时钟效果完整示例
Apr 28 jQuery
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
一文快速了解JQuery中的AJAX
May 31 jQuery
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
jquery+css3实现的经典弹出层效果示例
May 16 jQuery
Jquery高级应用Deferred对象原理及使用实例
May 28 jQuery
jquery实现点击左右按钮切换图片
Jan 27 jQuery
jQuery ajax - getScript() 方法和getJSON方法
May 14 jQuery
jQuery实现table中两列CheckBox只能选中一个的示例
Sep 22 #jQuery
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 #jQuery
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 #jQuery
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 #jQuery
jQuery实现可兼容IE6的滚动监听功能
Sep 20 #jQuery
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 #jQuery
jQuery实现IE输入框完成placeholder标签功能的方法
Sep 20 #jQuery
You might like
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
vue获取当前激活路由的方法
2018/03/17 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
python读写配置文件操作示例
2019/07/03 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
python logging 日志的级别调整方式
2020/02/21 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
会计专业推荐信
2013/10/29 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
钳工实训报告总结
2014/11/04 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
详解Python flask的前后端交互
2022/03/31 Python
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫