jQuery.getJSON( url [, data ] [, success ] )返回值: jqXHR
描述: 使用 GET HTTP 请求从服务器加载 JSON 编码的数据。
-
添加版本: 1.0jQuery.getJSON( url [, data ] [, success ] )
-
url类型: 字符串包含发送请求的 URL 的字符串。
-
data与请求一起发送到服务器的普通对象或字符串。
-
success请求成功时执行的回调函数。
-
这是一个简写 Ajax 函数,等效于
1
2
3
4
5
6
|
|
发送到服务器的数据作为查询字符串附加到 URL。如果 data
参数的值是普通对象,则在将其附加到 URL 之前将其转换为字符串并进行 URL 编码。
大多数实现将指定一个成功处理程序
1
2
3
4
5
6
7
8
9
10
11
|
|
当然,此示例依赖于 JSON 文件的结构
1
2
3
4
5
|
|
使用此结构,示例将遍历请求的数据,构建一个无序列表,并将其附加到主体。
success
回调函数将传递返回的数据,该数据通常是 JSON 结构定义的 JavaScript 对象或数组,并使用 $.parseJSON()
方法进行解析。它还将传递响应的文本状态。
从 jQuery 1.5 开始,success
回调函数接收一个 "jqXHR" 对象(在 jQuery 1.4 中,它接收 XMLHttpRequest
对象)。但是,由于 JSONP 和跨域 GET 请求不使用 XHR,因此在这些情况下传递给成功回调的 jqXHR
和 textStatus
参数未定义。
重要提示: 从 jQuery 1.4 开始,如果 JSON 文件包含语法错误,请求通常会静默失败。因此,避免频繁手动编辑 JSON 数据。JSON 是一种数据交换格式,其语法规则比 JavaScript 的对象文字表示法更严格。例如,JSON 中表示的所有字符串,无论是属性还是值,都必须用双引号括起来。有关 JSON 格式的详细信息,请参阅 https://json.org/。
JSONP
如果 URL 包含字符串“callback=?”(或类似的,由服务器端 API 定义),则请求将被视为 JSONP。有关更多详细信息,请参阅 $.ajax()
中对 jsonp
数据类型的讨论。
jqXHR 对象
从 jQuery 1.5 开始,所有 jQuery 的 Ajax 方法都返回 XMLHTTPRequest
对象的超集。此 jQuery XHR 对象(或“jqXHR”)由 $.getJSON()
返回,它实现了 Promise 接口,赋予它 Promise 的所有属性、方法和行为(有关更多信息,请参阅 Deferred 对象)。jqXHR.done()
(用于成功)、jqXHR.fail()
(用于错误)和 jqXHR.always()
(用于完成,无论成功还是错误;在 jQuery 1.6 中添加)方法接受一个函数参数,该参数在请求终止时被调用。有关此函数接收的参数的信息,请参阅 $.ajax()
文档的 jqXHR 对象 部分。
jQuery 1.5 中的 Promise 接口还允许 jQuery 的 Ajax 方法(包括 $.getJSON()
)在一个请求上链接多个 .done()
、.always()
和 .fail()
回调,甚至在请求可能已完成之后分配这些回调。如果请求已完成,则立即触发回调。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
|
弃用通知
jqXHR.success()
、jqXHR.error()
和 jqXHR.complete()
回调方法从 jQuery 3.0 开始被移除。您可以使用 jqXHR.done()
、jqXHR.fail()
和 jqXHR.always()
代替。
其他说明
- 由于浏览器安全限制,大多数“Ajax”请求都受 同源策略 的约束;请求无法成功从不同的域、子域、端口或协议检索数据。
- 脚本和 JSONP 请求不受同源策略限制。
示例
从 Flickr JSONP API 加载最近的四张雷尼尔山的图片。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
|
演示
从 test.js 加载 JSON 数据,并访问返回的 JSON 数据中的名称。
1
2
3
|
|
从 test.js 加载 JSON 数据,同时传递附加数据,并访问返回的 JSON 数据中的名称。如果发生错误,则记录错误消息。
1
2
3
4
5
6
7
8
|
|