jQuery.get()

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

描述:利用HTTP GET请求,从服务器载入数据。

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

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

success回调函数传入了返回的data,它将是一个XML根元素、文本字符串、JavaScript文件,或JSON对象,取决于响应的MIME类型。它也传入了响应的文本状态。

自从jQuery 1.5以来success回调函数还传入了"jqXHR" 对象(在jQuery 1.4中,它传入了XMLHttpRequest对象)。然而,因为JSONP和跨域GET请求并不使用XHR,在那种情况下,传给success回调函数的jqXHRtextStatus参数是undefined

更多的实现器将指定一个成功的处理函数:

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

此示例取回了请求的HTML片段,并把它插入到网页上。

The jqXHR Object

自从jQuery 1.5以来,所有jQuery的Ajax方法都返回一个XMLHTTPRequest对象的超集。$.get()方法返回的此jQuery XHR对象,或“jqXHR”,实现了应答对象接口,给它所有的应答对象的属性、方法和行为(请参阅延迟对象以进一步了解信息)。jqXHR.done()方法(针对success)、jqXHR.fail()方法(针对error)和jqXHR.always()方法(针对completion,无论是success还是error,在jQuery 1.6中添加)取用了一个函数参数,在请求终结时调用它们。欲进一步了解此函数接受的参数,请参阅$.ajax()文档的jqXHR 对象部分。

应答对象接口也允许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" );
});

淘汰通知

自从jQuery 3.0以来,已经删除了jqXHR.success()jqXHR.error()jqXHR.complete()回调函数方法。你可以使用jqXHR.done()jqXHR.fail()jqXHR.always()方法来代替。

补充说明:

  • 由于浏览器安全性限制,大多数“Aajx”请求都服从同源策略;请求不能从不同的域名、不同的子域、端口或协议成功地检索到数据。
  • 如果请求利用jQuery.get()方法返回一个错误代码,它将静默地失败,除非脚本还将调用全局.ajaxError() 方法。作为替代,自从jQuery 1.5以来,由jQuery.get()方法返回的jqXHR对象的.error()方法也可以用于错误处理。
  • Script请求和JSONP请求不服从同源策略限制。

示例:

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

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

请求test.php,把一些额外的数据随同发送(与此同时,依然忽略返回的结果)。

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

把数据的数组传递给服务器(与此同时依然忽略返回的结果)。

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

提醒来自请求的test.php的结果(HTML或XML,取决于它返回了什么)。

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

提醒来自请求的test.cgi的结果,带有一些额外的过载数据(HTML或XML,取决于它返回了什么)。

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

取得test.php网页内容,它以json格式返回(<?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" );