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实现文章图片弹出放大效果
Apr 06 jQuery
使用jQuery 操作table 完成单元格合并的实例
Dec 27 jQuery
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 jQuery
jQuery实现的简单对话框拖动功能示例
Jun 05 jQuery
JQuery扩展对象方法操作示例
Aug 21 jQuery
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
JQuery Ajax执行跨域请求数据的解决方案
Dec 10 jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
jQuery Migrate 插件用法实例详解
May 22 jQuery
JS JQuery获取data-*属性值方法解析
Sep 01 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插件 HTMLPurifier HTML解析器
2013/07/01 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
php提高网站效率的技巧
2015/09/29 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
原生JavaScript实现留言板
2021/01/10 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
python实现的文件夹清理程序分享
2014/11/22 Python
Python标准库内置函数complex介绍
2014/11/25 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
python可视化实现代码
2019/01/15 Python
CSS3 实现图形下落动画效果
2020/11/13 HTML / CSS
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
先进集体事迹材料
2014/02/17 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
公司晚会主持词
2014/03/22 职场文书
小学三年级学生评语
2014/04/22 职场文书
大学生毕业个人总结
2015/02/15 职场文书
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis
MySQL 原理与优化之Update 优化
2022/08/14 MySQL
Java使用HttpClient实现文件下载
2022/08/14 Java/Android