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 );
});