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插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
简单实现jquery隔行变色
Nov 09 jQuery
JS文件中加载jquery.js的实例代码
May 05 jQuery
jquery 通过ajax请求获取后台数据显示在表格上的方法
Aug 08 jQuery
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 jQuery
jQuery无冲突模式详解
Jan 17 jQuery
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 16 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
德生PL550的电路分析
2021/03/02 无线电
php设计模式 Observer(观察者模式)
2011/06/26 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
js href的用法
2010/05/13 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
简单的Vue SSR的示例代码
2018/01/12 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
浅谈dataframe中更改列属性的方法
2018/07/10 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
联谊活动策划书
2014/01/26 职场文书
法人任命书范本
2014/06/04 职场文书
小学见习报告
2014/10/31 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
爱晚亭导游词
2015/02/09 职场文书
2015公司年度工作总结
2015/05/14 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL