关于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 new后的constructor属性
Aug 05 Javascript
javascript 运算数的求值顺序
Aug 23 Javascript
setTimeout和setInterval的深入理解
Nov 08 Javascript
javascript 10进制和62进制的相互转换
Jul 31 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
jQuery与getJson结合的用法实例
Aug 07 Javascript
javascript设置文本框光标的方法实例小结
Nov 04 Javascript
Angular使用ng-messages与PHP进行表单数据验证
Dec 28 Javascript
canvas 实现中国象棋
Feb 17 Javascript
Bootstrap模态框案例解析
Mar 05 Javascript
vue项目打包部署_nginx代理访问方法详解
Sep 20 Javascript
js中Generator函数的深入讲解
Apr 07 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 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
iOS10推送通知开发教程
2016/09/19 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
js getElementsByTagName的简写方式
2010/06/27 Javascript
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
详解ES6中的Map与Set集合
2019/03/22 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
Flask框架信号用法实例分析
2018/07/24 Python
python创建n行m列数组示例
2019/12/02 Python
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
长青弘远的面试题
2012/06/09 面试题
大学生求职计划书
2014/04/30 职场文书
保护水资源的标语
2014/06/17 职场文书
家装电话营销开场白
2015/05/29 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
解析Java异步之call future
2021/06/14 Java/Android
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL