承诺响应适用于GET,但不适用于XHR中的POST

时间:2012-11-14 17:24:43

标签: rest dojo promise get-headers

我试图通过DOJO 1.8上的XHR.post调用URL。我需要从promise响应中捕获STATUS属性和getHeader(),但问题是,当我用POST调用我的URL时,我没有任何承诺,当我使用GET调用时,我拥有所需的所有属性,但是我只能以POST发送请求。

最奇怪的是我在AngularJS中有另一个代码,它运行良好,这段代码做同样的事情。我正在测试DOJO和AngularJS。

我需要捕获STATUS信息以检查它是否为201(已创建),如果为true我需要捕获getHeader('location')并调用我从getHeader('location')获取的URL。

看看我在Dojo 1.8中的方法:

checkCreation: function(typeFile, id){

    var promise = xhr('/rest/list/one', {
        handleAs: 'json',
        method: 'post',
        accepts: 'application/json',
        headers: {
            Accept: 'application/json',
            id: id,
            type: typeFile
        }
    });

    promise.response.then(function(response) {
        console.log("status", response.status);
        console.log("options", response.options);
        console.log("url", response.url);
        console.log("timestamp", response.options.timestamp);

        console.log(response);
    });

},

1 个答案:

答案 0 :(得分:0)

我发现了这个问题,我评论了以下几行,现在工作正常。

//handleAs: 'json',
//accepts: 'application/json',

句柄您只有在有JSON响应时才需要使用。关于“接受”我还没有发现“接受”和“接受”(内部标题)之间有什么区别。

现在我可以接受我的信息:

console.log('location: ', response.getHeader('location'));
console.log("status: ", response.status);