Я пытаюсь сделать вызов AJAX файлу ajax.htm. используя веб-исполнителя. Если он работает нормально, данные должны постоянно заполняться с заданным интервалом.WebWorker - Ajax call - error
Я не получаю сообщение об ошибке, и сообщение получения кажется работающим, но данные не заполняются на странице. Сообщение, отправленное рабочим.js, не прослушивается на главной странице. Вот код.
Моего файл webWorker.html выглядит следующим образом:
<!DOCTYPE html>
<html>
<head>
<title>Worker Sample</title>
<script type="text/javascript">
var worker = new Worker('worker.js');
// console.log(worker);
document.addEventListener("DOMContentLoaded",function(){
var result = document.querySelector('#result');
// console.log(result);
worker.addEventListener('message', function (event) {
console.log(event.data);
createElement('li', result,'',JSON.parse(event.data));
});
worker.addEventListener('error', function(err){
console.log("There was a problem",err);
});
worker.postMessage('start');
});
function createElement(elementType, parent, className, innerHTML, custom) {
var element = document.createElement(elementType);
if (parent) parent.appendChild(element);
if (className) element.className = className;
if (innerHTML) element.innerHTML = innerHTML;
if (typeof custom !== 'undefined') {
for (var prop in custom) {
element.setAttribute(prop, custom[prop]);
}
}
return element;
}
</script>
</head>
<body>
<div>
<ul id="result">Result</ul>
</div>
</body>
<html>
my worker.js is as follows:
/**
* Created by lakshmi on 7/22/15.
*/
self.addEventListener('message', function (e) {
if(e.data === 'start'){
setInterval(function() {
getData()
}, 1000);
}
function getData() {
var xhr = new XMLHttpRequest();
xhr.open('GET','ajaxcontent.htm');
xhr.withCredentials = true;
// xhr.setRequestHeader("Content-Type", "text/event-stream");
xhr.addEventListener('readyStateChange',function(){
if(xhr.readyState === 4){
self.postMessage(xhr.responseText);
}
});
xhr.send();
}
});
ajaxcontent.htm
content from external page
Я получаю ошибку CORS, когда пытаюсь запустить вызов ajax без веб-мастера. –
var data = setInterval (function() {getData()}, 1000); clearInterval (данные); это будет работать ?, вы очищаете интервал до его запуска. –
извините! пожалуйста, игнорируйте clearinterval. Я думал, что я удалил это, прежде чем вставлять код. –