Опитвам се да създам система за известяваневърху хром. Имам php, който извлича данни от mysql и отразява JSON, сега бих искал да се обадя на функция getJsonCode (), която е активирана, когато пристига push известие и чете JSON данните.
В моя сервизен работник създадох функциите на стандартите.
self.addEventListener("install", function(event) {
self.skipWaiting();
console.log("Installed", event);
});
self.addEventListener("activate", function(event) {
console.log("Activated", event);
});
self.addEventListener("push", function(event) {
console.log("Push message", event);
getJsonCode();
);
})
getJsonCode() {
codeRequest= new XMLHttpRequest();
codeRequest.open("get", "myfileWithJson.php", true);
codeRequest.send();
dataJSON = codeRequest.responseText;
console.log("rispostaJSON");
}
Възможно ли е да се обади външен файл като такъв в сервизен работник или има някакви ограничения? Защото не разбирам защо не работи
Отговори:
5 за отговор № 1Вместо XMLHttpRequest
, можете да използвате новия Извличане на API. XMLHttpRequest
е отхвърлен и не е наличен в обхвата на работника на услугата.
Има пример за това, което искате да постигнете тази рецепта за Готварска книга на ServiceWorker.
2 за отговор № 2
Можете да използвате fetch () вместо XHR, тъй като fetch () е нов API, който ви позволява да правите заявки, подобни на XHR, но има по-прост / приятелски API. тук, Опитайте тази:-
self.addEventListener("push", function(event) {
console.log("Push message", event);
event.waitUntil(
fetch("/myfileWithJson.php").then(function(response){
return response.json();
}).then(function(data){console.log(data);
return self.registration.showNotification(data.title, {
body: data.body,
icon: "images/icon.png",
tag: data.url
});
}));
});