关于JSON与JSONP简单总结


Posted in Javascript onAugust 16, 2016

一、什么是json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

二、什么是JSONP

JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”,可以让网页从别的网域要资料。另一个解决这个问题的新方法是跨来源资源共享。

JSONP

定义:是一种跨域数据访问方式。

作用与原理:在客户端声明 callback回调函数之后,客户端通过script标签向服务器跨域请求数据,然后服务端返回相应的JSON数据并动态执行回调函数。

在jQuery中使用如下:

//JQuery JSONP Support 
var url = "http://192.168.0.103:12075/api/test.aspx?id=1&callback=?"; 
jQuery.getJSON(url, function(data){ 
// 处理返回的json 数据
alert("name:" + data.name+ ", Price:" + data.price); 
});

调用 webservices 使用如下:

$.getJSON( 
"http://192.168.0.103:12050/services/WebService1.asmx/ws/test?callback=?", 
{ name: "jim", time: "2pm" }, 
function(data) {
//处理返回的json 数据
alert(decodeURI(data.msg));
});

服务器端(webservices 后台代码):

[WebMethod] 
public void ws(string name,string time) { 
HttpRequest Request = HttpContext.Current.Request; 
string callback = Request["callback"]; 
HttpResponse Response = HttpContext.Current.Response; 
Response.Write(callback + "({msg:' 返回数据'})"); 
Response.End(); 
}

总结JSONP:

两点需注意:

1.不提供错误处理机制,有数据返回,没有不显示内容,获得一个404的错误

2.如果使用了不信任的服务会造成很大的安全隐患。

JSON

与XML相比,JSON是一个轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成,分两种:对象(使用下面点语法获取属性值)和数组(遍历数组,索引获取)。

1.把 JSON 文本转换为 JavaScript 对象

从 web 服务器上读取 JSON 数据,将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据.

JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误。

即:通过eval函数将json串转换为json对象,然后可以通过两种方法访问:

关于JSON与JSONP简单总结

服务器端:

// user 实体对象,后台序列化成对象,供前台使用
string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(user);
context.Response.Write(strJson);

前台:

$.getJSON( 
"webdata/test.aspx",
function(data) {
//获取对象里面的一个值(username:用户姓名)
$("#divmessage").text(data.username);
}
);

2. 数组 获取

packJson = [
{"name":"nikita", "password":"1111"},
{"name":"tony", "password":"2222"}
];

循环遍历:

for(var i = 0; i < packJson.length; i++){
alert(packJson[i].name + " " + packJson[i].password);
}

以上所述是小编给大家介绍的关于JSON与JSONP简单总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
让textarea控件的滚动条怎是位与最下方
Apr 20 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 Javascript
js 获取radio按钮值的实例
Aug 17 Javascript
js仿百度贴吧验证码特效实例代码
Jan 16 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
javascript显示倒计时控制按钮的简单实现
Jun 07 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
Aug 12 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
Jul 30 Javascript
Layer弹出层动态获取数据的方法
Aug 20 Javascript
Bootstrap-table使用footerFormatter做统计列功能
Sep 07 Javascript
vue缓存的keepalive页面刷新数据的方法
Apr 23 Javascript
解决Vue打包上线之后部分CSS不生效的问题
Nov 12 Javascript
json与jsonp知识小结(推荐)
Aug 16 #Javascript
浅谈JS继承_借用构造函数 &amp; 组合式继承
Aug 16 #Javascript
JS读写CSS样式的方法汇总
Aug 16 #Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
Aug 16 #Javascript
jQuery EasyUI Tab 选项卡问题小结
Aug 16 #Javascript
jQuery3.0中的buildFragment私有函数详解
Aug 16 #Javascript
js 自带的 map() 方法全面了解
Aug 16 #Javascript
You might like
php实现微信发红包
2015/12/05 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
详解适配器在JavaScript中的体现
2018/09/28 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
Python实现Kmeans聚类算法
2020/06/10 Python
python使用turtle库绘制树
2018/06/25 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
Python箱型图处理离群点的例子
2019/12/09 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
怎样声明接口
2014/09/19 面试题
初级Java程序员面试题
2016/03/03 面试题
不假外出检讨书
2014/01/27 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
装修公司管理制度
2015/08/05 职场文书
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers