Ответ 1
Конечно, вы можете использовать AJAX внутри своего веб-сайта, вам просто нужно запомнить, что AJAX-вызов является асинхронным, и вам придется использовать обратные вызовы.
Это функция ajax
, которую я использую внутри моего веб-мастера, чтобы попасть на сервер и выполнять запросы AJAX:
var ajax = function(url, data, callback, type) {
var data_array, data_string, idx, req, value;
if (data == null) {
data = {};
}
if (callback == null) {
callback = function() {};
}
if (type == null) {
//default to a GET request
type = 'GET';
}
data_array = [];
for (idx in data) {
value = data[idx];
data_array.push("" + idx + "=" + value);
}
data_string = data_array.join("&");
req = new XMLHttpRequest();
req.open(type, url, false);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.onreadystatechange = function() {
if (req.readyState === 4 && req.status === 200) {
return callback(req.responseText);
}
};
req.send(data_string);
return req;
};
Затем внутри вашего работника вы можете сделать:
ajax(url, {'send': true, 'lemons': 'sour'}, function(data) {
//do something with the data like:
self.postMessage(data);
}, 'POST');
Возможно, вы захотите прочитать этот ответ о некоторых ошибках, которые могут возникнуть, если у вас есть слишком много запросов AJAX через веб-мастеров.