手机版

Json和Jsonp理论示例代码详解

时间:2021-11-14 来源:互联网 编辑:宝哥软件园 浏览:

什么是Json?JSON是一种轻量级的数据交换格式。它基于JavaScript的一个子集(标准ECMA-262第三版-1999年12月)。JSON采用了完全独立于语言的文本格式,但也使用了类似C语言家族的习惯(包括C、C、C #、Java、JavaScript、Perl、Python等。).这些特性使JSON成为一种理想的数据交换语言。便于人们读写,也便于机器分析和生成。json结构有两种:jsON简单来说就是javascript中的对象和数组,所以这两种结构就是对象和数组,通过它们可以表达各种复杂的结构。1.Objects:对象在JS中表示为“{}”的展开内容,数据结构是{key: value,key: value,}.在面向对象语言中,Key是对象的属性,value是对应的属性值,所以取值的方法是获取对象的属性值很容易理解。键,该属性值的类型可以是数字、字符串、数组和对象。2.Array:在js中,数组是括号“[]”的展开内容,数据结构是['java ',' javascript ',' vb ',].取值的方式和所有语言一样,都是使用索引获取的。字段值的类型可以是数字、字符串、数组和对象。经过对象和数组两种结构,可以组合成一个复杂的数据结构。JSON格式或规则:JSON可以用非常简单的方式描述数据结构,它可以做XML能做的任何事情,所以两者在跨平台上是完全无法区分的。1.JSON只有两个数据类型描述符,花括号{}和方括号[],其他英文冒号:是映射器,英文逗号是分隔符,英文双引号''是定义器。2.大括号{}用来描述一组“不同类型的无序键值对”(每个键值对都可以理解为OOP的属性描述),括号[]用来描述一组“同一类型的有序数据集”(OOP对应的数组)。3.如果以上两个集合中有多个子项,将用英文逗号隔开。4.键值对之间用英文冒号:隔开,建议在所有键名上加英文双引号'',方便不同语言的解析。5.JSON中常用的数据类型无非是字符串、数字、布尔值、日期和null。字符串必须用双引号括起来,其余的不使用。日期类型比较特殊,这里就不讨论了。我只是建议,如果客户端不需要按日期排序,直接将日期和时间作为字符串传递就好,可以省去很多麻烦。

JSON复制代码如下://描述一个人var Person={'name' :' aehyok ',' age' : 25,' company' :' aehyok ',' engineer ' : true }//获取此人var人士=Person的信息。年龄提醒(ProfeSsional);//描述几个人var成员=[{'name' :' aehyok ',' age' : 25,' company' :' aehyok ',' engineer' : true},{'name' :' lqm ',' age' 33。公司' : '甲骨文','工程师' :假},{ '姓名' :' THL ','年龄' : 22,'公司' : '微软','工程师' :假}]//读取lqm的公司名称。alert(lqmCompany);//描述一个会议var conference={ ' conference ' : ' future marketing ',' date' :' 2013-5-22 ',' address' :' Shenzhen ',' Members ' :[{ ' Name ' : ' aehyok ',' Age': 25,' Company': 'IBM ',{ ' Engineer ' 3: ' lqm ',' Age ' 3: 25,' Company成员[2]。工程师;alert(Thlisan engineer);什么是Jsonp1?这是一个众所周知的问题。Ajax直接请求普通文件时存在跨域未授权访问的问题。不管你是静态页面、动态网页、web服务还是WCF,只要是跨域请求,都是不允许的。2.但是,我们也发现在Web页面上调用js文件时不受跨域的影响(不仅如此,我们还发现所有带有属性‘src’的标签都具有跨域的能力,比如script、img和iframe)。3.因此可以判断,现阶段如果想通过纯web (ActiveX控件、服务器代理、未来属于HTML5的Websocket等)跨域访问数据。),只有一种可能,那就是尽量把数据放到远程服务器上的js格式文件中,供客户端调用和进一步处理;4.碰巧的是,我们已经知道有一种叫做jsON的纯字符数据格式,可以简洁地描述复杂的数据。更好的是,JSON本身也支持JS,所以这种格式的数据几乎可以在客户端随意处理。5.这样,解决方案就会脱颖而出。web客户端调用跨域服务器上动态生成的js格式文件(通常以JSON作为后缀),方式与调用脚本相同。显然,服务器动态生成JSON文件的目的是加载客户端所需的数据。6.客户端成功调用JSON文件后,得到需要的数据,剩下的根据自己的需要进行处理和显示。这种获取远程数据的方式看起来与AJAX非常相似,但实际上是不同的。7.为了方便客户端使用数据,逐渐形成了一种非正式的传输协议,称为JSONP。该协议的一个关键点是允许用户向服务器传递一个回调参数,然后当服务器返回数据时,回调参数将作为函数名来包装JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回的数据。如果对如何使用回调参数有些模糊,我们将在后面用具体的例子来解释。Jsonp客户端的具体实现:1。让我们从最简单的开始。首先,我在IIS中设置了两个网站。当然,一个端口是888,另一个是8888。我们将使用888作为本地服务器,8888作为远程服务器。目前有这样一个本地网页复制代码如下: html head titleindex.html/title脚本类型=' text/JavaScript ' src=' http :http://localhost 3360888/remote . js '/script/head dy/body/html,其中JavaScript文件引用了8888 remote.js文件。复制代码如下: alert(‘我是远程文件’);运行本地服务器网站后的效果是

现在最简单的跨域成功了。2.我们在1的基础上进行修改,先看代码复制代码如下: HTML Head titleindex.html/title脚本类型=' text/JavaScript ' Function Aehyok(数据){alert(数据。结果);}/script script type=' text/JavaScript ' src=' http :3358 localhost 33608888/remote . js '/script/head body/body/html首先在本地文件中添加一个js函数,然后调用远程服务器的js文件。复制的代码如下:aehyok({'result': '我是远程js带来的数据' });这是远程服务器的js文件中的代码。术后效果

已成功调用。跨域远程js成功调用了本地函数,远程js带来的数据也收到了。我很高兴跨域远程获取数据的目的基本实现了,但是又出现了一个问题。如何让远程js知道它应该调用的本地函数的名称?毕竟jsonp服务提供者要面对很多服务对象,他们的本地功能是不一样的。让我们继续往下看。复制代码如下:脚本类型=' text/JavaScript' $(文档)。Ready (function () {$)。Ajax ({type:' get ',async3360 false,URL 3360 './home/aehyok ',Type:' jsonp ',jsonp:' callback ',//参数名传递给请求处理程序或页面获取jsonp回调函数名(一般默认为: callback) jsonp回调3360' aehyok ',//用户自定义的jsonp回调函数名,默认为jQuery自动生成的随机函数名。jQuery会自动为你处理数据成功:函数(JSON) {alert('第二次' JSON . result);},error : function(){ alert(' fail ');} });});Aehyok(数据){alert('第一次'数据. result);}/script我在ASP.NET的MVC 3.0项目中,所以后台复制控制器中的代码如下:公共字符串aehyok(){ return ' aehyok({ \ ' result ' : '我是远程js带来的数据\ ' });}然后执行结果是

通过调试可以找到URL http://localhost :6247/home/aehyok。回调=aehyok _=1369235398641回调=aehyok是一个回调函数,调用后需要执行aehyok(数据)。然后执行成功(json)。所以有两个弹出窗口。现在我只在一个项目下工作,但事实还是一样。

版权声明:Json和Jsonp理论示例代码详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐