Intereting Posts
PHP не удается подключиться к сокету с шлюзом уведомлений Apple PHP / PDO MySQL отключает соединение, если пользовательская функция используется в длинном запросе Преобразование текстовой ссылки в HTML с учетом контекста BBCODE, preg_replace и двойные кавычки как определить пользовательский внешний ключ в методе Laurvel «belognsToMany»? PHP – дата между двумя другими датами – Игнорирующий месяц Как запретить пользователю использовать мой сайт? регулярное выражение для обнаружения чисел, написанных как слова – вход UTF-8 Как я могу эмулировать WHERE 1 в динамическом запросе? Как хранить .pdf-файлы в MySQL как BLOB-файлы с помощью PHP? FILTER_VALIDATE_EMAIL делает строку безопасной для вставки в базу данных? Как произвести 500 внутренних ошибок сервера в PHP? PHP – автоматическая отправка / запуск формы Мне нужно отлаживать PHP. Какой у меня лучший выбор? Загрузка динамического класса PHP

XMLHttpRequest в службе обслуживания

Я пытаюсь создать систему push-уведомлений на хроме. У меня есть php, который извлекает данные из mysql и перекликается с JSON, теперь я бы хотел вызвать функцию getJsonCode (), которая активируется при поступлении push-уведомления и считывании данных JSON.

В рамках моего сервисного работника я создал функции стандартов. Проблема в том, что когда я создаю getJsonCode с XMLHttpRequest, он говорит мне, что он не определен

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'); } 

Можно ли вызвать внешний файл, подобный этому, в служебном работнике или существуют какие-то ограничения? Потому что я не понимаю, почему это не работает

Вместо XMLHttpRequest вы можете использовать новый API Fetch . XMLHttpRequest устарел и недоступен в области рабочего рабочего.

Вот пример того, чего вы хотите достичь в этом рецепте Cookbook ServiceWorker .

Вы можете использовать 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 }); })); }); , 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 }); })); });