从服务工作者返回的javascript中的响应对象中的json内容

时间:2018-01-17 18:41:39

标签: javascript json ecmascript-6 fetch service-worker

对不起,如果是微不足道的,或已经被问过,我找不到任何关于此的问题。我不知道我是否也是对的......

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

我想从服务工作者返回一些特定请求的json对象。 N.B。:代码只是测试/学习代码: 服务工作者获取活动:

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”,但脚本中断“return responseObj.json();”错误“Uncaught(in promise)SyntaxError:位于1的JSON中的意外标记o”

如果我从服务工作者返回“纯文本”,并使用“responseObj.text()”读取它,那么一切都很棒!

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

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

1 个答案:

答案 0 :(得分:5)

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

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

您获得的错误是因为当前它被转换为字符串

"[object Object]"

JSON.parse("[object Object]")

抛出unexpected token "o"

相关问题