使用旧"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:
因此,您应该将 .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 响应代码(+时间戳)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
即使在调用 abort (jQuery) 之后,浏览器也会等待Browser waits for ajax call to complete even after abort has been called (jQuery)(即使在调用 abort (jQuery) 之后,浏览器也会等待 ajax 调用
JavaScript innerHTML 不适用于 IE?JavaScript innerHTML is not working for IE?(JavaScript innerHTML 不适用于 IE?)
XMLHttpRequest 无法加载,请求的资源上不存在“AXMLHttpRequest cannot load, No #39;Access-Control-Allow-Origin#39; header is present on the requested resource(XMLHttpRequest 无法加载,请求的资
XHR HEAD 请求是否有可能不遵循重定向 (301 302)Is it possible for XHR HEAD requests to not follow redirects (301 302)(XHR HEAD 请求是否有可能不遵循重定向 (301 302))
NETWORK_ERROR:XMLHttpRequest 异常 101NETWORK_ERROR: XMLHttpRequest Exception 101(NETWORK_ERROR:XMLHttpRequest 异常 101)
XMLHttpRequest 206 部分内容XMLHttpRequest 206 Partial Content(XMLHttpRequest 206 部分内容)