title: JSON
author: CodeCheng
top: false
cover: false
toc: true
mathjax: false
tags:

  • 前端
  • json
    categories:
  • 前端
  • json
    summary: JSON是一种轻量级的数据交换格式。
    abbrlink: 5d92c8f1
    date: 2021-03-07 09:46:01
    img:
    coverImg:
    password:

JSON

JSON

JSON: JavaScript Object Notation(JavaScript 对象表示法)

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。

JSON是一种轻量级的数据交换格式。

它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON 实例

简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式,例如在 PHP 中,可以将 JSON 还原为数组或者一个基本对象。在用到AJAX时,如果需要用到数组传值,这时就需要用JSON将数组转化为字符串。

表示对象

对象是一个无序的“‘名称/值’对”集合。一个对象以{左括号开始,}右括号结束。每个“名称”后跟一个:冒号;“‘名称/值’ 对”之间使用,逗号分隔。

{"firstName": "Brett", "lastName": "McLaughlin"}

表示数组

和普通的 JS 数组一样,JSON 表示数组的方式也是使用方括号 []。

{"people":[{"firstName": "Brett","lastName":"McLaughlin"},{"firstName":"Jason","lastName":"Hunter"}]
}

这不难理解。在这个示例中,只有一个名为 people的变量,值是包含两个条目的数组,每个条目是一个人的记录,其中包含名和姓。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示更过多的值(每个值包含多个记录)。

在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,也可以使用不同方式表示同一事物。

如前面所说,除了对象和数组,你也可以简单地使用字符串或者数字等来存储简单的数据,但这样并没有多大意义。

什么是 JSON ?

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
  • JSON 具有自我描述性,更易理解

JSON 语法规则

JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。 JSON是一个序列化的对象或数组。

1. 六个构造字符:

begin-array = ws %x5B ws ; [ 左方括号
begin-object = ws %x7B ws ; { 左大括号
end-array = ws %x5D ws ; ] 右方括号
end-object = ws %x7D ws ; } 右大括号
name-separator = ws %x3A ws ; : 冒号
value-separator = ws %x2C ws ; , 逗号

2. 在这六个构造字符的前或后允许存在无意义的空白符(ws):

ws = *(%x20 /; 空间
%x09 /; 水平标签
%x0A /; 换行或换行
%x0D); 回程

3.JSON的值:

3.1 JSON的构成: ws 值 ws

3.2值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。值中的字面值中的英文必须使用小写。

3.2.1对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成,如:

{"name": "John Doe", "age": 18, "address": {"country" : "china", "zip-code": "10000"}
}

3.2.2数组是由方括号括起来的一组值构成,如:

[3, 1, 4, 1, 5, 9, 2, 6]

3.2.3 字符串与C或者Java的字符串非常相似。字符串是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

3.2.4数字也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。 [2] 一些合法的JSON的实例:

{"a": 1, "b": [1, 2, 3]}
[1, 2, "3", {"a": 4}]

JSON 与 JS 对象的关系

很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解: JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。 如

var obj = {    a: 'Hello',     b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

JSON 和 JS 对象互转

要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:

var obj = {a: 'Hello', b: 'World'
}; //这是一个对象,注意键名也是可以使用引号包裹的

要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:

var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'

常用类型编辑

任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。

对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, …} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 [“java”, “javascript”, “vb”, …] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型


JSON 简介

JSON - 简介

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>前端教程</title>
</head>
<body>
<h2>JavaScript 创建 JSON 对象</h2>
<p>
网站名称: <span id="jname"></span><br />
网站地址: <span id="jurl"></span><br />
网站 slogan: <span id="jslogan"></span><br />
</p>
<script>
var JSONObject= {"name":"前端教程","url":"www.baidu.com", "slogan":"一个助你成为全栈开发的网站"
};
document.getElementById("jname").innerHTML=JSONObject.name
document.getElementById("jurl").innerHTML=JSONObject.url
document.getElementById("jslogan").innerHTML=JSONObject.slogan
</script></body>
</html>

与 XML 相同之处

  • JSON 是纯文本
  • JSON 具有”自我描述性”(人类可读)
  • JSON 具有层级结构(值中存在值)
  • JSON 可通过 JavaScript 进行解析
  • JSON 数据可使用 AJAX 进行传输

与 XML 不同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的 JavaScript eval() 方法进行解析
  • 使用数组
  • 不使用保留字

为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用 XML

  • 读取 XML 文档
  • 使用 XML DOM 来循环遍历文档
  • 读取值并存储在变量中

使用 JSON

  • 读取 JSON 字符串
  • 用 eval() 处理 JSON 字符串

JSON 语法

JSON 语法

JSON 语法是 JavaScript 语法的子集。

JSON 语法规则

JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 大括号保存对象
  • 中括号保存数组

JSON 名称/值对

JSON 数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"name" : "前端教程"

这很容易理解,等价于这条 JavaScript 语句:

name = "前端教程"

JSON 值

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在中括号中)
  • 对象(在大括号中)
  • null

JSON 数字

JSON 数字可以是整型或者浮点型:

{  "age":30  }

JSON 对象

JSON 对象在大括号({})中书写:

对象可以包含多个名称/值对:

{  "name":"前端教程" , "url":"www.baidu.com"  }

这一点也容易理解,与这条 JavaScript 语句等价:

name = "前端教程"  url = "www.baidu.com"

JSON 数组

JSON 数组在中括号中书写:

数组可包含多个对象:

{"sites": [{ "name":"前端教程" , "url":"www.baidu.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" }]
}

在上面的例子中,对象 “sites” 是包含三个对象的数组。每个对象代表一条关于某个网站(name、url)的记录。

JSON 布尔值

JSON 布尔值可以是 true 或者 false:

{ "flag":true }

JSON null

JSON 可以设置 null 值:

{ "axihe":null }

JSON 使用 JavaScript 语法

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

var sites = [{ "name":"baidu" , "url":"www.baidu.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" }
];

可以像这样访问 JavaScript 对象数组中的第一项(索引从 0 开始):

sites[0].name;

返回的内容是:

axihe

可以像这样修改数据:

sites[0].name="前端教程";

如何把 JSON 文本转换为 JavaScript 对象。

JSON 文件

  • JSON 文件的文件类型是 “.json”
  • JSON 文本的 MIME 类型是 “application/json”

JSON 对象

对象语法

{ "name":"baidu", "alexa":10000, "site":null
}

JSON 对象使用在大括号({})中书写。

对象可以包含多个 **key/value(键/值)**对。

key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

key 和 value 中使用冒号(:)分割。

每个 key/value 对使用逗号(,)分割。

访问对象值

你可以使用点号(.)来访问对象的值:

var myObj, x;
myObj = { "name":"baidu", "alexa":10000, "site":null };
x = myObj.name;

你也可以使用中括号([])来访问对象的值:

var myObj, x;myObj = { "name":"baidu", "alexa":10000, "site":null };x = myObj["name"];

循环对象

你可以使用 for-in 来循环对象的属性:

var myObj, x;
myObj = { "name":"baidu", "alexa":10000, "site":null };
x = myObj.name;

在 for-in 循环对象的属性时,使用中括号([])来访问属性的值:

var myObj = { "name":"baidu", "alexa":10000, "site":null };
for (x in myObj) {document.getElementById("demo").innerHTML += myObj[x] + "<br>";
}

嵌套 JSON 对象

JSON 对象中可以包含另外一个 JSON 对象:

myObj = {"name":"",baidu"alexa":10000,"sites": {"site1":"www.baidu.com","site2":"m.baidu.com","site3":"c.baidu.com"}
}

你可以使用点号(.)或者中括号([])来访问嵌套的 JSON 对象。

x = myObj.sites.site1;// 或者
x = myObj.sites["site1"];

修改值

你可以使用点号(.)来修改 JSON 对象的值:

myObj.sites.site1 = "www.google.com";

你可以使用中括号([])来修改 JSON 对象的值:

myObj.sites["site1"] = "www.google.com";

删除对象属性

我们可以使用 delete 关键字来删除 JSON 对象的属性:

delete myObj.sites.site1;

你可以使用中括号([])来删除 JSON 对象的属性:

delete myObj.sites["site1"]

JSON 数组

数组作为 JSON 对象

[ "Google", "baidu", "Taobao" ]

JSON 数组在中括号中书写。

JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

JavaScript 中,数组值可以是以上的 JSON 数据类型,也可以是 JavaScript 的表达式,包括函数,日期,及 undefined

JSON 对象中的数组

对象属性的值可以是一个数组:

{    "name":"网站",    "num":3,    "sites":[ "Google", "baidu", "Taobao" ]}

我们可以使用索引值来访问数组:

x = myObj.sites[0];

循环数组

你可以使用 for-in 来访问数组:

for (i in myObj.sites) {    x += myObj.sites[i] + "<br>";}

你也可以使用 for 循环:

for (i = 0; i < myObj.sites.length; i++) {    x += myObj.sites[i] + "<br>";}

嵌套 JSON 对象中的数组

JSON 对象中数组可以包含另外一个数组,或者另外一个 JSON 对象:

myObj = {"name":"网站","num":3,"sites": [{ "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },{ "name":"axihe", "info":[ "前端", "工具", "微信" ] },{ "name":"Taobao", "info":[ "淘宝", "网购" ] }]
}

我们可以使用 for-in 来循环访问每个数组:

for (i in myObj.sites) {x += "<h1>" + myObj.sites[i].name + "</h1>";for (j in myObj.sites[i].info) {x += myObj.sites[i].info[j] + "<br>";}
}

修改数组值

你可以使用索引值来修改数组值:

myObj.sites[1] = "Github";

删除数组元素

我们可以使用 delete 关键字来删除数组元素:

delete myObj.sites[1];

JSON.parse()

JSON.parse()

JSON 通常用于与服务端交换数据。

在接收服务器数据时一般是字符串。

我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。

语法

JSON.parse(text[, reviver])

参数说明:

  • **text:**必需, 一个有效的 JSON 字符串。
  • reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

JSON 解析实例

例如我们从服务器接收了以下数据:

{ "name":"baidu", "alexa":10000, "site":"www.baidu.com" }

我们使用 JSON.parse() 方法处理以上数据,将其转换为 JavaScript 对象:

var obj = JSON.parse('{ "name":"baidu", "alexa":10000, "site":"www.baidu.com" }');

解析完成后,我们就可以在网页上使用 JSON 数据了:

<p id="demo"></p><script>
var obj = JSON.parse('{ "name":"baidu", "alexa":10000, "site":"www.baidu.com" }');
document.getElementById("demo").innerHTML = obj.name + ":" + obj.site;
</script>

从服务端接收 JSON 数据

我们可以使用 AJAX 从服务器请求 JSON 数据,并解析为 JavaScript 对象。

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {if (this.readyState ** 4 && this.status ** 200) {myObj = JSON.parse(this.responseText);document.getElementById("demo").innerHTML = myObj.name;}
};
xmlhttp.open("GET", "/try/ajax/json_demo.txt", true);
xmlhttp.send();

从服务端接收数组的 JSON 数据

如果从服务端接收的是数组的 JSON 数据,则 JSON.parse 会将其转换为 JavaScript 数组:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {if (this.readyState ** 4 && this.status ** 200) {myArr = JSON.parse(this.responseText);document.getElementById("demo").innerHTML = myArr[1];}
};
xmlhttp.open("GET", "/try/ajax/json_demo_array.txt", true);
xmlhttp.send();

异常

解析数据

JSON 不能存储 Date 对象。

如果你需要存储 Date 对象,需要将其转换为字符串。

之后再将字符串转换为 Date 对象。

var text = '{ "name":"axihe", "initDate":"2013-12-14", "site":"www.axihe.com"}';
var obj = JSON.parse(text);
obj.initDate = new Date(obj.initDate);document.getElementById("demo").innerHTML = obj.name + "创建日期: " + obj.initDate;

我们可以启用 JSON.parse 的第二个参数 reviver,一个转换结果的函数,对象的每个成员调用此函数。

var text = '{ "name":"axihe", "initDate":"2013-12-14", "site":"www.axihe.com"}';
var obj = JSON.parse(text, function (key, value) {if (key ** "initDate") {return new Date(value);} else {return value;
} });document.getElementById("demo").innerHTML = obj.name + "创建日期:" + obj.initDate;var text = '{ "name":"axihe", "initDate":"2013-12-14", "site":"www.axihe.com"}';var obj = JSON.parse(text, function (key, value) {    if (key ** "initDate") {        return new Date(value);    } else {        return value;} }); document.getElementById("demo").innerHTML = obj.name + "创建日期:" + obj.initDate;

解析函数

JSON 不允许包含函数,但你可以将函数作为字符串存储,之后再将字符串转换为函数。

var text = '{ "name":"axihe", "alexa":"function () {return 10000;}", "site":"www.axihe.com"}';
var obj = JSON.parse(text);
obj.alexa = eval("(" + obj.alexa + ")");document.getElementById("demo").innerHTML = obj.name + " Alexa 排名:" + obj.alexa();

不建议在 JSON 中使用函数。

浏览器支持

主流浏览器都支持 JSON.parse() 函数:

  • Firefox 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4

JSON.stringify()

JSON.stringify()

JSON 通常用于与服务端交换数据。

在向服务器发送数据时一般是字符串。

我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

语法

JSON.stringify(value[, replacer[, space]])

参数说明:

  • value:

    必需, 要转换的 JavaScript 值(通常为对象或数组)。

  • replacer:

    可选。用于转换结果的函数或数组。

    如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:”“。

    如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。

  • space:

    可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。

JavaScript 对象转换

例如我们向服务器发送以下数据:

var obj = { "name":"baidu", "alexa":10000, "site":"www.baidu.com"};

我们使用 JSON.stringify() 方法处理以上数据,将其转换为字符串:

var myJSON = JSON.stringify(obj);

myJSON 为字符串。

我们可以将 myJSON 发送到服务器:

var obj = { "name":"axihe", "alexa":10000, "site":"www.axihe.com"};var myJSON = JSON.stringify(obj);document.getElementById("demo").innerHTML = myJSON;

JavaScript 数组转换

我们也可以将 JavaScript 数组转换为 JSON 字符串:

var arr = [ "Google", "axihe", "Taobao", "Facebook" ];
var myJSON = JSON.stringify(arr);

myJSON 为字符串。

我们可以将 myJSON 发送到服务器:

var arr = [ "Google", "axihe", "Taobao", "Facebook" ];
var myJSON = JSON.stringify(arr);
document.getElementById("demo").innerHTML = myJSON;

异常

解析数据

JSON 不能存储 Date 对象。

JSON.stringify() 会将所有日期转换为字符串。

var obj = { "name":"baidu", "initDate":new Date(), "site":"www.baidu.com"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;

之后你可以再将字符串转换为 Date 对象。

解析函数

JSON 不允许包含函数,JSON.stringify() 会删除 JavaScript 对象的函数,包括 key 和 value。

var obj = { "name":"baidu", "alexa":function () {return 10000;}, "site":"www.baidu.com"};
var myJSON = JSON.stringify(obj);document.getElementById("demo").innerHTML = myJSON;

我们可以在执行 JSON.stringify() 函数前将函数转换为字符串来避免以上问题的发生:

var obj = { "name":"baidu", "alexa":function () {return 10000;}, "site":"www.baidu.com"};
obj.alexa = obj.alexa.toString();
var myJSON = JSON.stringify(obj);document.getElementById("demo").innerHTML = myJSON;

不建议在 JSON 中使用函数。

浏览器支持

主流浏览器都支持 JSON.stringify() 函数:

  • Firefox 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4

JSON 使用

把 JSON 文本转换为 JavaScript 对象

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

为了更简单地为您讲解,我们使用字符串作为输入进行演示(而不是文件)。

JSON 实例 - 来自字符串的对象

创建包含 JSON 语法的 JavaScript 字符串:

var txt = '{ "sites" : [' +'{ "name":"前端教程" , "url":"www.xxx.com" },' +'{ "name":"google" , "url":"www.google.com" },' +'{ "name":"微博" , "url":"www.weibo.com" } ]}';

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

var obj = eval ("(" + txt + ")");

在网页中使用 JavaScript 对象:

var txt = '{ "sites" : [' +
'{ "name":"xxx" , "url":"www.xxx.com" },' +
'{ "name":"google" , "url":"www.google.com" },' +
'{ "name":"微博" , "url":"www.weibo.com" } ]}';var obj = eval ("(" + txt + ")");document.getElementById("name").innerHTML=obj.sites[0].name
document.getElementById("url").innerHTML=obj.sites[0].url

JSON 解析器

函数可编译并执行任何 JavaScript 代码。这隐藏了一个潜在的安全问题。

使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。

在浏览器中,这提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。

较新的浏览器和最新的 ECMAScript (JavaScript) 标准中均包含了原生的对 JSON 的支持。

Web 浏览器支持 Web 软件支持
Firefox (Mozilla) 3.5Internet Explorer 8ChromeOpera 10Safari 4 jQueryYahoo UIPrototypeDojoECMAScript 1.5

对于较老的浏览器,可使用 JavaScript 库: https://github.com/douglascrockford/JSON-js

JSON 格式最初是 originally specified by Douglas Crockford

Jsonp(JSON with Padding) 是 json 的一种”使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

为什么我们从不同的域(网站)访问数据需要一个特殊的技术( JSONP )呢?这是因为同源策略。

同源策略,它是由 Netscape 提出的一个著名的安全策略,现在所有支持 JavaScript 的浏览器都会使用这个策略。

JSONP 应用

1. 服务端 JSONP 格式数据

如客户想访问 : /jsonp.php?jsoncallback=callbackFunction

假设客户期望返回数据:["customername1","customername2"]

真正返回到客户端的数据显示为: callbackFunction(["customername1","customername2"])

服务端文件 jsonp.php 代码为:

<?phpheader('Content-type: application/json');//获取回调函数名$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);//json数据$json_data = '["customername1","customername2"]';//输出jsonp格式的数据echo $jsoncallback . "(" . $json_data . ")";
?>

2. 客户端实现 callbackFunction 函数

<script type="text/javascript">
function callbackFunction(result, methodName)
{var html = '<ul>';for(var i = 0; i < result.length; i++){html += '<li>' + result[i] + '</li>';}html += '</ul>';document.getElementById('divCustomers').innerHTML = html;
}
</script>

页面展示

<div id="divCustomers"></div>

客户端页面完整代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP 实例</title>
</head>
<body>
<div id="divCustomers"></div>
<script type="text/javascript">
function callbackFunction(result, methodName)
{var html = '<ul>';for(var i = 0; i < result.length; i++){html += '<li>' + result[i] + '</li>';}html += '</ul>';document.getElementById('divCustomers').innerHTML = html;
}
</script>
<script type="text/javascript" src="/jsonp.php?jsoncallback=callbackFunction"></script>
</body>
</html>

jQuery 使用 JSONP

以上代码可以使用 jQuery 代码实例:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>JSONP 实例</title><script src="/libs/jquery/1.8.3/jquery.js"></script>
</head>
<body>
<div id="divCustomers"></div>
<script>
$.getJSON("/jsonp.php?jsoncallback=?", function(data) {var html = '<ul>';for(var i = 0; i < data.length; i++){html += '<li>' + data[i] + '</li>';}html += '</ul>';$('#divCustomers').html(html);
});
</script>
</body>
</html>

JSON快速学习入门相关推荐

  1. C++_list快速学习入门(中英文结合)

    list简介 简介:链表,是一种在物理存储单元上非连续的存储结构. list构造函数 函数原型: list<T> lst; // list采用模板类实现,对象的默认构造形式 list(be ...

  2. 深度学习入门(一)快速建立自己的图片数据集

    机器学习或深度学习的第一步是获取数据集,一般我们使用业务数据集或公共数据集.本文将介绍使用 Bing Image Search API 和 Python 脚本,快速的建立自己的图片数据集. 1. 快速 ...

  3. ElasticSearch快速学习---30分钟入门ElasticSearch

    ElasticSearch快速学习 ElasticSearch原理,30分钟入门ElasticSearch 目录 1 解析es的分布式架构 2 分片和副本机制  3 单节点环境下创建索引分析 4 两个 ...

  4. Ruby入门之零基础如何学ruby以及ruby的应用/快速学习ruby/学习ruby的流程是什么?...

    作者:李路 链接:https://www.zhihu.com/question/19552402/answer/22336708 来源:知乎 快速学习Ruby on Rails,这应该是个伪命题,没有 ...

  5. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    转载自:https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程:给深度学习入门者的Python快速教程 - 基础篇 给深度学习入门者的Python快速教程 - ...

  6. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    转载自:https://zhuanlan.zhihu.com/p/24309547 本篇部分代码的下载地址: https://github.com/frombeijingwithlove/dlcv_f ...

  7. 刘海洋 · LaTeX 不快速的入门 学习笔记

    刘海洋 · LaTeX 不快速的入门 学习笔记 网址链接 : 刘海洋 · LaTeX 不快速的入门 - 跟着大神学习最纯正的 LaTeX 知识 一.组织文档结构 1. 文档基本结构 以document ...

  8. Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)

    全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...

  9. 准备选择计算机方向,该怎样快速学习电脑知识?零基础到精通入门!

    怎样快速学电脑知识?零基础到精通入门学习,电脑是辅助人们工作的工具,想要熟练使用电脑就需要掌握相应的操作方法,对应零基础对电脑一窍不通的人,我们该怎么快速学习电脑操作呢? 怎样快速学电脑知识? 一.确 ...

最新文章

  1. import lombok 报错_lombok
  2. [题解]POJ 3683 Priest John's Busiest Day
  3. Namomo Spring Camp Div2 Week1 - 第五次打卡
  4. 计算机组成原理基本试题,计算机组成原理试卷
  5. 四旋翼电池、电机、螺旋桨选型与搭配
  6. 正确握笔姿势~超详细完整重点解说图
  7. CAD二次开发--自定义下拉菜单与工具栏踩坑总结(附带源码)
  8. 计算机简单构图,涨姿势了!人像二次构图技巧原来这么简单
  9. SAP采购申请中数量/单价/价格单位/总价的填写图示
  10. PC传输图片到Hololens
  11. ubuntu 下解压带密码的rar压缩包
  12. 关于网络游戏的影响(腾讯游戏)
  13. CDN加速全站配置教程
  14. Windows右击无新建文本文档怎么办
  15. 大数据处理——Java
  16. Java工程师考试题
  17. 2015程序员小白理财记
  18. QT笔记——Q_PROPERTY了解
  19. 统计学在中国的发展与就业前景
  20. 微信小程序 - 倒计时60秒(获取验证码)

热门文章

  1. linux 进程流量统计,Linux进程网络流量统计方法及实现
  2. 解决”Windows已经保护您的电脑”的三个方法
  3. linux 查看硬盘空间
  4. 华为Atlas 500智能小站如何使能边缘计算?
  5. 与Zeynep Tufekci讨论社交媒体驱动的抗议的未来
  6. 英语学习笔记——发音篇
  7. 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序
  8. 软件测试工程师和技术支持工程师哪个更有钱途,以后会发展更好?
  9. 计算机类普刊有哪些,可以快速发表论文的计算机普刊
  10. windows edge页面显示status_stack_buffer_overrun的解决