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层级选择器_动力节点节点Java学院整理
Jul 04 jQuery
jQuery dateRangePicker插件使用方法详解
Jul 28 jQuery
详解jquery选择器的原理
Aug 01 jQuery
jQuery接受后台传递的List的实例详解
Aug 02 jQuery
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
jquery实现企业定位式导航效果
Jan 01 jQuery
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
jQuery实现ajax的嵌套请求案例分析
Feb 16 jQuery
jquery实现动态改变css样式的方法分析
May 27 jQuery
jQuery实现聊天对话框
Feb 08 jQuery
jQuery实现飞机大战小游戏
Jul 05 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 单引号与双引号的区别
2009/11/24 PHP
php array的学习笔记
2012/05/10 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
通过实例解析python描述符原理作用
2020/01/22 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
HTML5实现简单图片上传所遇到的问题及解决办法
2016/01/20 HTML / CSS
文科教师毕业的自我评价
2014/01/16 职场文书
现场施工员岗位职责
2014/03/10 职场文书
德语专业求职信
2014/03/12 职场文书
员工考核评语大全
2014/04/26 职场文书
医师定期考核实施方案
2014/05/07 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
企业公益活动策划方案
2014/08/24 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
服务器SVN搭建图文安装过程
2022/06/21 Servers