How to retrieve XHR response code (+timestamp) of AMD#39;ized Dojo?(如何检索 AMD 化 Dojo 的 XHR 响应代码(+时间戳)?)
问题描述
使用旧"Dojo,可以将第二个参数 ioargs
传递给 Xhr 请求的 load
函数(请参见此处的示例 6).此 ioargs
提供(除其他外)请求的时间戳和状态代码.
With the "old" Dojo one could pass a second argument ioargs
to the load
function of a Xhr request (see Example 6 here). This ioargs
provided (among other things) the timestamp and status code of the request.
但是如何使用新的更干净"(并且向前兼容)Dojo 来实现这一点?
不幸的是,我在 当前文档中找不到任何提示一个>.
But how can I achieve this with the new and "cleaner" (and forward compatible) Dojo?
Unfortunately, I could not find any hints in the current documentation.
以下应该是上述引用示例到新"Dojo 的移植.但是,ioargs
将是未定义的:
The following should be a port of above referenced example to the "new" Dojo. But, ioargs
will be undefined:
require( "dojo/request/xhr", "dojo/dom", "dojo/domReady!",
function(request, dom){
// Look up the node we'll stick the text under.
var targetNode = dom.byId("getLicenseStatus");
// The parameters to pass to xhrGet, the url, how to handle it, and the callbacks.
request.get(
"{{dataUrl}}dojo/LICENSE",
{
handleAs: "text",
preventCache: true
}
).then(
function(data, ioargs){
// FIXME: ioargs is undefined
targetNode.innerHTML = "XHR returned HTTP status: " + ioargs.xhr.status;
},
function(error){
targetNode.innerHTML = "An unexpected error occurred: " + error.response.status + ": " + error.response.text;
}
);
}
);
我需要更改哪些内容才能使请求的时间戳和状态代码在加载函数中可用?
What do I need to change to have the request's timestamp and status code available in the load function?
推荐答案
request
返回一个特殊的 promise
(来源):
request
returns a special promise
(source):
从 dojo/request 调用返回的 Promise 有一个标准 Promise 上没有的附加属性:response.此属性是一个承诺,它将解析为更详细地描述响应的冻结对象(如果可用):
Promises returned from dojo/request calls have an additional property not available on standard promises: response. This property is a promise that will resolve to a frozen object (where available) describing the response in more detail:
- url - 用于发出请求的最终 URL(附加查询字符串)
- options – 用于发出请求的选项对象
- 文本 - 响应中数据的字符串表示
- data – 响应中处理的数据(如果指定了 handleAs)
- getHeader(headerName) – 从请求中获取标头的函数;如果提供者不提供标头信息,则此函数将返回 null.
因此,您应该将 .then
链接到此 promise.response
以访问所有上述属性:
So you should chain .then
to this promise.response
to get access to all the aforementioned properties:
var promise = request.get("{{dataUrl}}dojo/LICENSE");
promise.response.then(function(response) {
console.log("status", response.status);
console.log("url", response.url);
console.log("data", response.data);
});
在 jsFiddle 上查看一个工作示例:http://jsfiddle.net/phusick/6wB2L/
See a working example at jsFiddle: http://jsfiddle.net/phusick/6wB2L/
这篇关于如何检索 AMD 化 Dojo 的 XHR 响应代码(+时间戳)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何检索 AMD 化 Dojo 的 XHR 响应代码(+时间戳)?
- Fetch API 如何获取响应体? 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01