jQuery.get()


jQuery.get( url [, data ] [, success ] [, dataType ] )返回: jqXHR

描述: 使用 HTTP GET 请求从服务器加载数据。

  • 添加版本: 1.0jQuery.get( url [, data ] [, success ] [, dataType ] )

    • url
      类型: 字符串
      一个字符串,包含请求发送到的 URL。
    • data
      类型: PlainObjectString
      一个普通对象或字符串,随请求发送到服务器。
    • success
      类型: Function( PlainObject data, String textStatus, jqXHR jqXHR )
      一个回调函数,如果请求成功则执行。如果提供了 dataType 则必需,但你可以使用 nulljQuery.noop 作为占位符。注意: 在 jQuery 3.x 及更早版本中,当为 success 提供 null 值时,你还必须提供 data 参数;你可以将其设置为 nullundefined
    • dataType
      类型: 字符串
      预期从服务器返回的数据类型。默认:智能猜测(xml, json, script, text, html)。
  • 添加版本: 1.12-and-2.2jQuery.get( [settings ] )

    • settings
      类型: PlainObject
      一组键/值对,用于配置 Ajax 请求。除 url 外,所有属性都是可选的。可以使用 $.ajaxSetup() 为任何选项设置默认值。有关所有设置的完整列表,请参阅 jQuery.ajax( settings )type 选项将自动设置为 GET

这是一个简写 Ajax 函数,等同于

1
2
3
4
5
6
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});

success 回调函数接收返回的数据,该数据将是一个 XML 根元素、文本字符串、JavaScript 文件或 JSON 对象,具体取决于响应的 MIME 类型。它还会接收响应的文本状态。

自 jQuery 1.5 起success 回调函数还会接收一个 “jqXHR” 对象(在 jQuery 1.4 中,它接收的是 XMLHttpRequest 对象)。但是,由于 JSONP 和跨域 GET 请求不使用 XHR,在这些情况下,传递给 success 回调的 jqXHRtextStatus 参数是未定义的。

大多数实现会指定一个成功处理程序

1
2
3
4
$.get( "ajax/test.html", function( data ) {
$( ".result" ).html( data );
alert( "Load was performed." );
});

此示例获取请求的 HTML 片段并将其插入页面。

jqXHR 对象

自 jQuery 1.5 起,所有 jQuery 的 Ajax 方法都返回 XMLHTTPRequest 对象的超集。由 $.get() 返回的这个 jQuery XHR 对象(或“jqXHR”)实现了 Promise 接口,赋予它 Promise 的所有属性、方法和行为(有关更多信息,请参阅Deferred 对象)。jqXHR.done()(用于成功)、jqXHR.fail()(用于错误)和 jqXHR.always()(用于完成,无论成功或错误;在 jQuery 1.6 中添加)方法都接受一个函数参数,该函数在请求终止时被调用。有关此函数接收的参数的信息,请参阅 $.ajax() 文档的 jqXHR 对象部分。

Promise 接口还允许 jQuery 的 Ajax 方法(包括 $.get())在单个请求上链式调用多个 .done().fail().always() 回调,甚至可以在请求可能已完成后分配这些回调。如果请求已完成,回调会立即触发。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.get( "example.php", function() {
alert( "success" );
})
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});
// Perform other work here ...
// Set another completion function for the request above
jqxhr.always(function() {
alert( "second finished" );
});

废弃通知

jqXHR.success()jqXHR.error()jqXHR.complete() 回调方法自 jQuery 3.0 起已移除。你可以改用 jqXHR.done()jqXHR.fail()jqXHR.always()

附加说明

  • 由于浏览器安全限制,大多数“Ajax”请求都受 同源策略的约束;请求无法成功从不同的域、子域、端口或协议检索数据。
  • 如果使用 jQuery.get() 的请求返回错误代码,它将静默失败,除非脚本还调用了全局 ajaxError 事件。或者,自 jQuery 1.5 起,jQuery.get() 返回的 jqXHR 对象的 .error() 方法也可用于错误处理。
  • 脚本和 JSONP 请求不受同源策略限制。

示例

示例 1

请求 test.php 页面,但忽略返回结果。

1
$.get( "test.php" );

示例 2

请求 test.php 页面并发送一些额外数据(同时仍然忽略返回结果)。

1
$.get( "test.php", { name: "John", time: "2pm" } );

示例 3

将数据数组传递给服务器(同时仍然忽略返回结果)。

1
$.get( "test.php", { "choices[]": ["Jon", "Susan"] } );

示例 4

警报请求 test.php 的结果(HTML 或 XML,取决于返回的内容)。

1
2
3
$.get( "test.php", function( data ) {
alert( "Data Loaded: " + data );
});

示例 5

警报请求 test.cgi 并附加有效负载数据的结果(HTML 或 XML,取决于返回的内容)。

1
2
3
4
$.get( "test.cgi", { name: "John", time: "2pm" } )
.done(function( data ) {
alert( "Data Loaded: " + data );
});

示例 6

获取以 json 格式返回的 test.php 页面内容(<?php echo json_encode( array( "name"=>"John","time"=>"2pm" ) ); ?>),并将其添加到页面。

1
2
3
4
5
$.get( "test.php", function( data ) {
$( "body" )
.append( "Name: " + data.name ) // John
.append( "Time: " + data.time ); // 2pm
}, "json" );

示例 7

获取同一域上的另一个页面。将返回的数据和数据类型都输出到控制台。

1
2
3
4
5
6
// If this was sent on https://api.jqueryjs.cn/jQuery.get/ you will
// get the response result of https://api.jqueryjs.cn/jQuery.ajax/
$.get( "/jQuery.ajax/", function( data ) {
console.log( typeof data ); // string
console.log( data ); // HTML content of the jQuery.ajax page
});