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正则验证注册页面经典实例
Jun 10 jQuery
jQuery自定义多选下拉框效果
Jun 19 jQuery
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
jQuery EasyUI window窗口使用实例代码
Dec 25 jQuery
浅谈jquery fullpage 插件增加头部和版权的方法
Mar 20 jQuery
js与jQuery实现获取table中的数据并拼成json字符串操作示例
Jul 12 jQuery
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
jQuery层叠选择器用法实例分析
Jun 28 jQuery
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 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
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
php编译安装php-amq扩展简明教程
2016/06/25 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
取选中的radio的值
2010/01/11 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
Python中字典和JSON互转操作实例
2015/01/19 Python
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python获取代码运行时间的实例代码
2018/06/11 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
大学生入党思想汇报
2014/01/01 职场文书
手机被没收的检讨书
2014/10/04 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
入党函调证明材料
2015/06/19 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript