返回值:jqXHRjQuery.get(url, [data], [success(data, textStatus, jqXHR)], [dataType])
通过 HTTP GET 方式从服务器载入数据。
-
1.0 新增jQuery.get(url, [data], [success(data, textStatus, jqXHR)], [dataType])
url (String) 将要被请求的 URL 字符串。data (Map, String) 可选参数,发送给服务器的字符串或者映射。success(data, textStatus, jqXHR) (Function) 可选参数,当请求成功后执行的回调函数。dataType (String) 可选参数,预计从服务器返回的数据类型。默认值:智能匹配 (xml, json, script, 或 html)。
这是一个 Ajax 函数的简写形式,它等价于:
$.ajax({ url: url, data: data, success: success, dataType: dataType });
success
回调函数会传入返回的数据,根据响应的 MIME 类型的不同,它可能是一个 XML 根元素、文本字符串、JavaScript 文件或者 JSON 对象。同时还会传入描述响应状态的字符串。
从 jQuery 1.5 开始, success
回调函数还会传入一个 "jqXHR" 对象 (在 jQuery 1.4 中, success
回调函数传入一个 XMLHttpRequest
对象)。但是,由于 JSONP 和跨域的 GET 请求不使用 XHR,所以,在这种情况下,传入到 success
回调函数中的 (j)XHR
和 textStatus
参数是 undefine。
大多数情况下都会指定一个请求成功后的回调函数:
$.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 的所有属性,方法和行为。(详见 延迟对象 来获得更多信息)。为了让回调函数的名字统一,便于在
$.ajax()
里使用, jQuery XHR 对象(也可叫做 "jqXHR")同样也提供了 .error()
, .success()
和 .complete()
方法。这些方法都带有一个参数,该参数是一个函数,此函数在 $.ajax()
请求结束时被调用,并且这个函数接收的参数,与调用 $.ajax()
函数时的参数是一致。
Promise 接口在 jQuery 1.5 里,允许在 $.get()
方法后直接注册 .success()
, .complete()
和 .error()
回调函数,甚至允许你在请求已经结束后,注册回调函数。如果该请求已经完成,则回调函数会被立刻调用。
// Assign handlers immediately after making the request, // and remember the jqxhr object for this request var jqxhr = $.get("example.php", function() { alert("success"); }) .success(function() { alert("second success"); }) .error(function() { alert("error"); }) .complete(function() { alert("complete"); }); // perform other work here ... // Set another completion function for the request above jqxhr.complete(function(){ alert("second complete"); });
补充说明:
- 由于浏览器的安全限制,大多数 "Ajax" 请求都服从 同源策略(same origin policy)。即无法从不同的域,子域或协议中正确接收数据。
- 如果 jQuery.get() 返回一个错误代码,除非在脚本中调用了全局的 .ajaxError() 方法,否则错误将被忽略。或者利用 jQuery 1.5 中
jqXHR
对象的.error()
方法进行捕获,jqXHR
对象由 jQuery.get() 返回。 - Script 和 JSONP 请求没有同源策略(same origin policy)的限制。
示例:
请求 test.php 页面,但忽略返回的结果。
jQuery 代码:
$.get("test.php");
示例:
请求 test.php 页面,并传递一些附加的数据,但依然忽略返回的结果。
jQuery 代码:
$.get("test.php", { name: "John", time: "2pm" } );
示例:
传递一个数组到服务器,继续忽略返回的结果。
jQuery 代码:
$.get("test.php", { 'choices[]': ["Jon", "Susan"]} );
示例:
显示从 test.php 请求到的结果(HTML 或者 XML,根据返回的结果而不同)。
jQuery 代码:
$.get("test.php", function(data){
alert("Data Loaded: " + data);
});
示例:
显示从 test.cgi 请求到的数据,同时传递一些数据(HTML 或者 XML,根据返回的结果而不同)。
jQuery 代码:
$.get("test.cgi", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
示例:
返回 test.php 的页面内容。页面内容按 json 格式被返回 (<?php echo json_encode(array("name"=>"John","time"=>"2pm")); ?>), 并将它添加到页面上。
jQuery 代码:
$.get("test.php",
function(data){
$('body').append( "Name: " + data.name ) // John
.append( "Time: " + data.time ); // 2pm
}, "json");