Javascript 从$.get请求访问jqXHR对象属性
我有一个简单的函数,如下所示:Javascript 从$.get请求访问jqXHR对象属性,javascript,jquery,Javascript,Jquery,我有一个简单的函数,如下所示: function getURL(url) { return $.get(url); } 我调用的(其他地方,特别是在单元测试中)如下: 所以console.log(url)工作,并返回statustext/status等。。。应该这样 但是,如何访问jqXHR对象的属性。例如url.status返回未定义 这是装载问题吗?然而,在我真正收到页面之前我就已经登录了……如果是这样,为什么只打印url变量就返回对象呢 如何访问jqXHR对象的属性。例如,url.s
function getURL(url) {
return $.get(url);
}
我调用的(其他地方,特别是在单元测试中)如下:
所以console.log(url)工作,并返回statustext/status等。。。应该这样
但是,如何访问jqXHR对象的属性。例如url.status
返回未定义
这是装载问题吗?然而,在我真正收到页面之前我就已经登录了……如果是这样,为什么只打印url变量就返回对象呢
如何访问jqXHR对象的属性。例如,url.status返回未定义
通过在请求完成后访问它:
var jqxhr = getURL("/page/stuff");
jqxhr.always(function (result) {
console.log(jqxhr.status);
});
这是装载问题吗?而我在真正收到页面之前就已经登录了
对
如果是这样,为什么只打印url变量就返回对象
因为$.get()
返回一个表示请求的对象。但是它的一些属性在请求完成之前不会被填充。jQuery.get()
是一个jQuery
承诺,因此在延迟的对象上有xhr
选项
我想你想要这个:
var _request = function( url ) {
return $.get( url );
};
_request('https://httpbin.org/get').done(function( data, textStatus, jqXHR ) {
console.info( jqXHR.status );
});
此处的更多信息:听起来像是在ajax调用完成之前尝试读取url.status
;这将使url.status未定义。您需要等待整个函数启动,因此速记$.get
可能不是这里的最佳选择。“result”到底从何而来?基本上,jqXHR将保留传递到.always()
(或进入.then()
,或.done()中的函数
,当请求完成时,它将调用该函数并传入结果。因此,它就是从那里来的。您也可以在发送jqxhr对象之前使用BeforeSsend属性访问它。为什么我们使用jqxhr.status而不是data.status?@msmith1114没有数据。status
数据
是已发送的数据收到。@JLRishe我想我对什么是“数据”感到困惑。jqXHR只是对象属性,所以数据应该是……在这种情况下,无论页面内容是什么?@msmith1114是的,它应该是服务器响应的内容。
var _request = function( url ) {
return $.get( url );
};
_request('https://httpbin.org/get').done(function( data, textStatus, jqXHR ) {
console.info( jqXHR.status );
});