繁体   English   中英

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

[英]json content in response object in javascript returned from service worker

对不起,如果是微不足道的,或者已经被问到,我对此没有任何疑问。 我也不知道我是否也做对了...

我刚刚开始学习服务人员:

我想针对特定请求从服务工作者返回一些json对象。 注意:该代码只是测试/学习代码:Service Worker Fetching Event:

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();”上中断 错误“未捕获(承诺)SyntaxError:JSON中位置1的意外令牌o”

如果我从服务人员返回“纯文本”,并用“ responseObj.text()”阅读,那么一切都很好!

在此链接“ https://developer.mozilla.org/en-US/docs/Web/API/Response/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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM