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实现tab键进行选择后enter键触发click行为
Mar 29 jQuery
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
简单实现jQuery轮播效果
Aug 18 jQuery
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
jQuery实现对网页节点的增删改查功能示例
Sep 18 jQuery
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 jQuery
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
Apr 17 jQuery
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
jQuery实现全选按钮
Jan 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文件中bom的PHP代码
2012/03/13 PHP
php简单实现快速排序的方法
2015/04/04 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
python读取中文txt文本的方法
2018/04/12 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python虚拟环境完美部署教程
2019/08/06 Python
如何用Python 加密文件
2020/09/10 Python
python代码实现猜拳小游戏
2020/11/30 Python
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
工作自我评价怎么写
2014/01/29 职场文书
应届生求职信范文
2014/05/26 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
结婚老公保证书
2015/02/26 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
大国崛起日本观后感
2015/06/02 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技