2015-07-23 4 views
-1

Я пытаюсь сделать вызов 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 
+0

Я получаю ошибку CORS, когда пытаюсь запустить вызов ajax без веб-мастера. –

+0

var data = setInterval (function() {getData()}, 1000); clearInterval (данные); это будет работать ?, вы очищаете интервал до его запуска. –

+0

извините! пожалуйста, игнорируйте clearinterval. Я думал, что я удалил это, прежде чем вставлять код. –

ответ

-1

CORS ошибка означает, что вы делаете запрос на другой домен и другой домен не позволяет кросс request.Try домена сделать запрос к вашему домену . Другой домен может позволить некоторым заголовкам или некоторым типам методов запроса (POST, DELETE, GET, PUT) разрешать доступ со всех доменов или из некоторых доменов.

Если вы не согласны с моим ответом, объясните, почему.

+0

Я предполагаю, что моя проблема связана с тем, что часть веб-сайта не работает, чем ошибка CORS. Я создаю файл для содержимого ajax и пытаюсь распечатать файл с постоянными интервалами, но он, похоже, не работает. Редактирование вопроса –