对不起,如果是微不足道的,或者已经被问到了,我找不到关于此的任何问题。我也不知道我是否做得对...
我刚刚开始学习服务人员:
我想针对特定请求从服务工作者返回一些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"
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句