相关疑难解决方法(0)

javascript fetch - 无法在'Response'上执行'json':正文流被锁定

当请求状态大于400(我已尝试过400,423,429状态)时,fetch无法读取返回的json内容.浏览器控制台中显示以下错误

未捕获(承诺)TypeError:无法在'Response'上执行'json':正文流被锁定

我显示了返回的响应对象的内容,如下所示:

在此输入图像描述

但几个月前我仍然可以使用它.

我的问题如下:

  • 这只是Chrome浏览器的行为或获取标准的变化吗?
  • 有没有办法获得这些状态的身体内容?

PS:我的浏览器版本是Google Chrome 70.0.3538.102(正式版本)(64位)

javascript fetch-api

52
推荐指数
4
解决办法
3万
查看次数

在Javascript中拦截Fetch()API响应和请求

我想拦截Javascript中的fetch API请求和响应.

例如:在发送请求之前要拦截请求URL并且一旦获得响应就想拦截响应.

以下代码用于拦截所有XMLHTTPRequest的响应.

(function(open) {
 XMLHttpRequest.prototype.open = function(XMLHttpRequest) {
    var self = this;
    this.addEventListener("readystatechange", function() {
        if (this.responseText.length > 0 && this.readyState == 4 && this.responseURL.indexOf('www.google.com') >= 0) {
            Object.defineProperty(self, 'response', {
                get: function() { return bValue; },
                set: function(newValue) { bValue = newValue; },
                enumerable: true,
                configurable: true
            });
            self.response = 'updated value' //Intercepted Value 
        }
    }, false);
    open.apply(this, arguments);
};
})(XMLHttpRequest.prototype.open);
Run Code Online (Sandbox Code Playgroud)

我想为Fetch()API实现相同的功能.

提前致谢..

javascript ajax xmlhttprequest interceptor fetch-api

13
推荐指数
4
解决办法
7489
查看次数

当 DOM 元素从网络流入时,如何附加它们?

我有一个元素想要作为请求的 HTML 流填充,而不是等待完整的响应。事实证明这非常困难。

\n\n

我尝试过的事情:

\n\n

1.milestoneNode.insertAdjacentHTML(\'beforebegin\', text)

\n\n

如果这有效的话,那就太好了。不幸的是,具有古怪解析的元素会破坏它 \xe2\x80\x94 例如<p><table>。由此产生的 DOM 可以被宽容地描述为 Dada。

\n\n

2.使用虚拟DOM/DOM更新管理库

\n\n

谷歌似乎incremental-dom最有前途,但它的patch()操作总是从容器节点的开头重新启动。不知道如何将其“冻结”到位。

\n\n

这也有至少在 JavaScript 中进行 HTML 标记化的负担,并且必须进行一些实际的树构建,除非提供格式良好的 XHTML5。(没有人这样做。)重新实现浏览器的HTML 解析器似乎是我犯了严重错误的标志。

\n\n

3.document.write()

\n\n

我很绝望。讽刺的是,这个古老的妖怪几乎具有我需要的行为,没有“扔掉现有页面”的事情。

\n\n

4. 附加到字符串,然后innerHTML定期对其进行 ing

\n\n

破坏了流式传输的意义,因为最终整个响应都会保存在内存中。还有重复序列化的开销。

\n\n

从好的方面来看,它确实有效。但肯定有更好的方法吗?

\n

html javascript streaming dom service-worker

6
推荐指数
1
解决办法
2189
查看次数