jQuery.get()
使用一个HTTP GET请求从服务器加载数据。
jQuery.get(url[,data][,success][,dataType])
- url。类型:String。一个包含发送请求的URL字符串。
- data。类型:PlainObject or String。一个普通对象或字符串,通过请求发送给服务器。
- success。类型:Function(PlainObject data, String textStatus, jqXHR jqXHR)。当请求成功后执行的回调函数。如果提供
dataType
选项,那么这个success
选项是必须的,但你可以使用null
或jQuery.noop
作为占位符。 - dataType。类型:String。从服务器返回的预期的数据类型。默认:智能猜测(xml, json, script, text,html)。
jQuery.get([settings])
settings。类型:PlainObject。一组用于配置Ajax请求的键/值对。除了url
以外的所有选项属性都是可选的。任何默认选项可以用$.ajaxSetup()进行设置。所有选项设置的完整列表,请参阅jQuery.ajax(settings)。 type(类型)选项将自动设置为GET
。
这是一个Ajax功能的缩写,这相当于:
$.ajax({ url: url, data: data, success: success, data类型:dataType });
success
回调函数会传入返回的数据,是根据MIME类型的响应,它可能返回的数据类型包括XML根节点,字符串, JavaScript 文件,或者 JSON 对象。同时还会传入描述响应状态的字符串。
在jQuery 1.5,success
回调函数还传递一个“jqXHR”对象(在 jQuery 1.4中,它传递的是XMLHttpRequest
对象)。然而,由于JSONP形式和跨域的GET请求不使用XHR,在这些情况下,jqXHR
和textStatus
参数传递给success(成功)回调是 undefined 。
大多数实现将指定一个成功的回调处理程序:
$.get('ajax/test.html',function (data) { $('.result').html(data); alert('Load was performed.'); });
这个例子所请求到的HTML代码片段插在页面中。
The jqXHR Object(jqXHR 对象)
从jQuery 1.5开始,所有jQuery的Ajax方法都返回一个XMLHTTPRequest
对象的超集。这个通过$.get()
方法返回的jQuery XHR对象,或“jqXHR,”实现了 Promise 接口,使它拥有 Promise 的所有属性,方法和行为(见Deferred 对象获取更多信息)。jqXHR.done()
(表示成功),jqXHR.fail()(表示错误)
,和jqXHR.always()
(表示完成,无论是成功或错误;在jQuery 1.6 中添加)方法接受一个函数参数,用来请求终止时被调用。关于这个函数接收参数的详细信息,请参阅 jqXHR Object 文档中的$.ajax()章节。
Promise 接口也允许jQuery的Ajax方法,包括$.get()
,在一个单独的请求中关联到.done()
,.fail()
,和.always()
回调函数,甚至允许你在请求已经结束后,指派回调函数。如果该请求已经完成,则回调函数会被立刻调用。
// Assign handlers immediately after making the request, // and remember the jqxhr object for this requestvar 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"); });
Deprecation Notice(推荐使用的注意事项:)
jqXHR.success()
,jqXHR.error()
,和jqXHR.complete()
回调方法在jQuery 1.5中引进,在jQuery 1.8中不赞成使用,已经过时。他们最终将被取消(移除),你的代码应该为次做好准备,从jQuery 3.0开始被删除,你可以使用jqXHR.done()
,jqXHR.fail()
,和jqXHR.always()
代替.
Additional Notes:(其他注意事项:)
- 由于浏览器的安全限制,大多数“Ajax”的要求,均采用同一起源的政策;即无法从不同的域,子域或协议中正确接收数据。
- 如果一个jQuery.get()请求返回一个错误代码,它会静静的失败,除非脚本调用全局的.ajaxError()方法。在jQuery 1.5,通过jQuery.get()返回的
jqXHR
对象的.error()
方法也可用于错误处理。 - Script和JSONP形式请求不受同源策略的限制。
例子
请求 test.php 页面,但是忽略返回结果.
$.get("test.php");
请求 test.php 页面并且发送url参数(虽然仍然忽视返回的结果)。
$.get("test.php", { name: "John", time: "2pm" } );
传递数组形式data参数给服务器(虽然仍然忽视返回的结果).
$.get("test.php", { 'choices[]': ["Jon", "Susan"]} );
Alert 从 test.php请求的数据结果(HTML 或者 XML,取决于返回的结果).
$.get("test.php",function (data){ alert("Data Loaded: " + data); });
Alert 从 test.cgi请求并且发送url参数的数据结果(HTML 或者 XML,取决于返回的结果).
$.get("test.cgi", { name: "John", time: "2pm" },function (data){ alert("Data Loaded: " + data); });
获取test.php的页面已返回的JSON格式的内容,并且加到页面中.
//php <?php echojson_encode (array("name"=>"John","time"=>"2pm")); ?> //javascrip $.get("test.php",function (data){ $('body').append( "Name: " + data.name ) // John .append( "Time: " + data.time ); // 2pm }, "json");