JSON与JSONP
Json:一种轻量级的数据传输格式,方便编写和解析,传输数据量小,速度快。
Jsonp:一种约定俗成的协议,广泛的使用于解决跨域问题。
JSON
1:Json的两种结构:
a:名称/值
{“name”:”张三”,”age”:”23”,”sex”:”男”}
b:值的有序列表(也称数组)
{ “person”:
[
{“name”:”张三”,”age”:”23”,”sex”:”男”},
{“name”:”李四”,”age”:”24”,”sex”:”男”},
{“name”:”王五妹”,”age”:”25”,”sex”:”女”}
]
}
1.1JSON数据的访问
创建一个变量,把json格式的字符串赋值给这个变量
var person={ “person”:
[
{“name”:”张三”,”age”:”23”,”sex”:”男”},
{“name”:”李四”,”age”:”24”,”sex”:”男”},
{“name”:”王五妹”,”age”:”25”,”sex”:”女”}
]
}
//访问person下的张三
console.log(person.person[0].name);
这样在控制台就输出:张三
/
/修改json数据,修改person下的张三
person.person[0].name=”张武侠”;
console.log(person.person[0].name);
这样在控制台就输出:张武侠;
1.2JSON字符串和对象的相互转换
a:JSON.parse()//把JSON字符串转为一个json对象
b:JSON.stringify();//把JSON对象转换为一个json字符串
如:
把json对象转为字符串
person=JSON.stringify(person);
console.log(typeof person);//控制台输出string
把字符串转为JSON对象
person=JSON.parse(person);
console.log(typeof person);//控制台输出object
Jsonp
2同源策略:
同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来:百度和谷歌的页面当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。
总结起来,就是跨域问题
2.1跨域的基本原理:
利用<script>标签没有跨域的限制来达到与第三方通信的目的,当需要获取第三方的信息时,创建出一个<script>标签,其属性src指向第三方的API地址:
例如:谷歌提供的搜索接口:
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=?&callback=?
并且提供一个回调函数来接受返回的信息,第三方返回的信息为json数据:
下面我们以上面谷歌提供的搜索接口举例说明:
上面接口的q表示你要搜索的值,callback表示在客户端的回调函数名会输给服务端,服务端返回客户端定义的回调函数名的方法,用以接受服务端返回的json数据.
下面看代码:
<!DOCTYPE html>
<html>
<head>
<title>JSONP跨域</title>
</head>
<body>
<input type="text" id="text"/>
<input type="button" id="sousou" value="搜索" />
<div></div>
</body>
<script type="text/javascript">
var sousou=document.getElementById("sousou");
var url="";
window.onload=function(){
sousou.onclick=function(){
//获取要搜索的文本
var text=document.getElementById("text").value;
//添加要搜索的文本,并在向服务器传输你接收返回数据的回调函数名称
url="http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q="+text+"&callback=fn";
//创建script标签并把要获取的url赋值给script标签的src,并且
var r1=document.createElement("script");
r1.setAttribute("type","text/javascript");
r1.setAttribute("src",url);
//把script标签添加到head中
document.getElementsByTagName("head")[0].appendChild(r1);
};
}
//接收服务端返回的json数据的回调函数
function fn(res){
if(res){
var div_1=document.getElementsByTagName("div")[0];
var str="";
var results=res.responseData.results;
for(var i in results){
str+=results[i].title+"\n";
str+=results[i].content+"\n";
str+=results[i].cacheUrl;
}
div_1.innerHTML=str;
}
}
</script>
</html>
搜索结果:
- 大小: 74.3 KB
分享到:
相关推荐
### JSON与JSONP知识点详解 #### 一、JSON简介 **JSON**(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 ##### JSON的基本...
1.json与jsonp的引入 在ajax中 JSON用来解决数据交换问题,而JSONP来实现跨域。 备注:跨域也可以通过服务器端代理来解决; 理解:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方...
JSON(JavaScript Object Notation)和JSONP(JSON with Padding)是两种常见的数据交换格式,尤其在Web开发中广泛使用。本文将深入探讨这两种...理解JSON和JSONP的差异与应用场景,对于进行高效的Web开发至关重要。
json-viewer, 它是用于打印JSON和JSONP的Chrome 扩展 JSON查看器 你的眼睛所见过的最漂亮和可以定制的json/。...注释:这里扩展可能会与其他JSON萤火虫/格式化程序发生碰撞,你可能需要禁用它们要突出显示本地文件
有关json与jsonp的区别(json才是目的,jsonp只是手段)介绍如下所示: 一言以蔽之,json返回的是一串数据;而jsonp返回的是脚本代码(包含一个函数调用); JSON其实就是JavaScript中的一个对象,跟var obj={}在质...
因为JSON是JavaScript的子集,所以可以直接在JavaScript环境中解析和生成,无需额外的编译或解析步骤,这也是JSONP(JSON with Padding)出现的基础。 JSONP是一种非官方的跨域数据交互协议,主要解决的是浏览器...
#### 二、Json与Jsonp的区别 **Json(JavaScript Object Notation)**是一种轻量级的数据交换格式。它基于JavaScript的一个子集,采用了一种类似于XML的格式来表示结构化数据,但比XML更轻巧、更快捷。Json的主要...
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。而JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”。下面是小编总结的关于JSON与JSONP知识,感兴趣的朋友一起看下吧
"详解JSON和JSONP劫持以及解决方法" 本文主要介绍了JSON和JSONP劫持的概念、攻击过程、解决方法以及实例代码,旨在帮助读者深入理解这两种攻击方式,并提供实际有效的解决方法。 JSON劫持 JSON劫持,也称为JSON ...
JSON是一种轻量级的数据交换格式,它基于纯文本,拥有良好的跨平台传递能力,并且与JavaScript有原生的集成支持。JSON的数据结构简单,主要由对象和数组组成,可以表示各种数据类型,包括字符串、数字、布尔值、null...
JSON格式被广泛应用于Web服务和客户端之间的数据交互,因为其结构与JavaScript对象相似,可以方便地与JavaScript进行无缝对接。 JSONP(JSON with Padding)是JSON的一种使用模式,它允许Web页面通过`<script>`标签...
### JSON与JSONP详解 #### 一、JSON概述 **JSON**(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON的流行主要得益于以下几点优势: 1. **跨平台性...
json-formatter, 使 json/jsonp易于阅读 JSON格式化程序当你在浏览器选项卡中访问 in'直接'时,很好的打印JSON和tmodel的Chrome 扩展。特性JSONP支持快速,即使在长页面上有效的JSON页面- URL不重要语法高亮显示带有...
JSONP(JSON with Padding)是一种解决浏览器同源策略限制的技术,允许Web页面从其他域名请求数据。由于JavaScript不能直接通过Ajax进行跨域请求,但可以加载跨域的JavaScript文件,JSONP利用这个特性,通过在服务器...
JSON常用于Web应用开发中,用以实现服务器与客户端之间的数据传输。JSON数据可以包含以下类型:数字(整数或浮点数)、字符串(必须是双引号包围的文本)、逻辑值(布尔类型,true或false)、数组(用方括号表示)、...