Можно ли сделать ajax post запрос в исполнении ServiceWorkers?
У меня зарегистрирован сервисный работник, который просто «слушает» push-уведомление.
Мне нужно вызвать функцию PHP (для чтения некоторых данных из моей базы данных) во время выполнения Service Worker (при получении push-уведомления), но я не могу это сделать. Когда я вызываю сообщение ajax, оно переходит в раздел «error» и появляется ошибка «No Transport» (я пытался добавить «jQuery.support.cors = true;», как предлагалось в другой теме, но это не решило проблему) ,
Здесь ниже код сервисной работы.
Разве нельзя делать то, что я пытаюсь сделать, или я делаю что-то не так?
var document = self.document = {parentNode: null, nodeType: 9, toString: function() {return "FakeDocument"}};
var window = self.window = self;
var fakeElement = Object.create(document);
fakeElement.nodeType = 1;
fakeElement.toString=function() {return "FakeElement"};
fakeElement.parentNode = fakeElement.firstChild = fakeElement.lastChild = fakeElement;
fakeElement.ownerDocument = document;
document.head = document.body = fakeElement;
document.ownerDocument = document.documentElement = document;
document.getElementById = document.createElement = function() {return fakeElement;};
document.createDocumentFragment = function() {return this;};
document.getElementsByTagName = document.getElementsByClassName = function() {return [fakeElement];};
document.getAttribute = document.setAttribute = document.removeChild =
document.addEventListener = document.removeEventListener =
function() {return null;};
document.cloneNode = document.appendChild = function() {return this;};
document.appendChild = function(child) {return child;};
importScripts('js/jquery.js');self.addEventListener('push', function(event) {
jQuery.support.cors = true;
var endpoint = "";
if (event.data) {
endpoint = event.data.text();
}
var data = {
query: "SELECT * FROM [TABLE] WHERE ENDPOINT = '" + endpoint + "'"};
$.ajax({
data: data,
method: "POST",
url: 'ExecuteQueryJquery.php',
dataType: 'json',
success: function (obj, textstatus) {
var o = obj;
},
error: function (obj, textstatus) {
var o = obj;
}
});
});
Задача ещё не решена.
Других решений пока нет …