【问题标题】:Promise response works with GET, but not with POST in XHRPromise 响应适用于 GET,但不适用于 XHR 中的 POST
【发布时间】:2012-11-14 17:24:43
【问题描述】:

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

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

我需要捕获 STATUS 信息来检查它是否是 201(已创建),如果是真的我需要捕获 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);
    });

},

【问题讨论】:

    标签: rest dojo promise get-headers


    【解决方案1】:

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

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

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

    现在我可以获取我的信息了:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-08
      • 2017-01-25
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多