关于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 相关文章推荐
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
Dec 09 Javascript
javascript实现简单的进度条
Jul 02 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 Javascript
JavaScript中判断数据类型的方法总结
May 24 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
May 30 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
微信小程序canvas分享海报功能
Oct 31 Javascript
Javascript原生ajax请求代码实例
Feb 20 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
Aug 19 Javascript
vue组件实现移动端九宫格转盘抽奖
Oct 16 Javascript
Array.filter中如何正确使用Async
Nov 04 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
合作指挥官:孟斯克
2020/03/16 星际争霸
编写PHP的安全策略
2006/10/09 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
ext jquery 简单比较
2010/04/07 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
python列表去重的二种方法
2014/02/14 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
对python 自定义协议的方法详解
2019/02/13 Python
Python的互斥锁与信号量详解
2019/09/12 Python
pygame实现打字游戏
2021/02/19 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
知识竞赛活动方案
2014/02/18 职场文书
一分钟演讲稿
2014/04/30 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
银行金融服务方案
2014/06/11 职场文书
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记