JavaScript 中响应对象中的 JSON 内容从 Service Worker 返回



抱歉,如果微不足道,或者已经问过了,我找不到任何问题。我不知道我是否也做对了...

我刚刚开始学习服务工作者:

我想从服务工作者那里为特定请求返回一些 json 对象。注意:代码只是测试/学习代码:服务工作进程获取事件:

self.addEventListener('fetch', function(event) {
if(event.request.url.indexOf("not_existing.json") > -1){
    var obj = { "Prop" : "Some value" };
    event.respondWith(
        new Response(obj, {
            ok: true,
            status: 222,
            url: '/'
        })
    );    
}});

取回电话:

fetch('not_existing.json')
.then(function(responseObj) {
    console.log('status: ', responseObj.status);
    return responseObj.json();
})
.then(function (data){
    console.log(data); 
});

我知道服务工作者捕获了请求,因为在"console.log('status: ', responseObj.status(;"我得到"222",但脚本在"返回响应Obj.json((;"时中断,错误为"未捕获(承诺(语法错误:位置 1 处的 JSON 中出现意外的标记 o">

如果我从服务工作者返回"纯文本",并使用"responseObj.text(("阅读它,一切都很好!

在这个链接"https://developer.mozilla.org/en-US/docs/Web/API/Response/Response"上,似乎我只需要在响应构造函数上编写正文var myResponse = new Response(body, init);

怎么了?如何指定 json 响应对象?

您实际上并没有使用 JSON 创建响应。Response的第一个参数是一个字符串或其他几个,但不是随机对象。如果你想要JSON,你需要实际传递JSON,例如

var obj = JSON.stringify({ "Prop" : "Some value" });

您得到的错误是因为当前它被转换为字符串,如下所示

"[object Object]"

JSON.parse("[object Object]")

unexpected token "o".

最新更新