Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Web工作者和JSON_Javascript_Json_Html_Web Worker - Fatal编程技术网

Javascript Web工作者和JSON

Javascript Web工作者和JSON,javascript,json,html,web-worker,Javascript,Json,Html,Web Worker,我确信我在这段代码中遗漏了一些东西,我就是不知道它是什么 以下是主页: <script> function wwCallback(e) { document.write(e.data); } function wwError(e) { alert(e.data) } $(document).ready(function () { var worker = new Worker("sync.js

我确信我在这段代码中遗漏了一些东西,我就是不知道它是什么

以下是主页:

  <script>
    function wwCallback(e) {
        document.write(e.data);
    }
    function wwError(e) {
        alert(e.data)
    }
    $(document).ready(function () {
        var worker = new Worker("sync.js");
        worker.onmessage = wwCallback;
        worker.onerror = wwError;
        worker.postMessage({
            'cmd': 'downloadUser',
            'url': 'server.php'
        });
        console.log("WW Started");
    });
</script>

有人能给我指出正确的方向吗?

您的问题在于您的WebWorker XHR呼叫。您已经打开了请求,然后在设置事件处理程序来处理响应之前立即发送了请求。您只需要移动
req.send(null)在设置事件处理程序的代码下面调用

试试这个:

function getData(url) {
var req = new XMLHttpRequest();

//expect json
    req.open('GET', url);
    //  req.send(null);        // remove this line from here.
    req.onreadystatechange = function () {
        if (req.readyState == 4) {
            if (req.status == 200) {
                self.postMessage(req.responseText);
            }
        }
    }
    req.send(null);        // make the request after your readystatechange
                           // handler is set up.
} 

self.addEventListener('message', function (e) {
  var data = e.data;
  switch (data.cmd) {
    case 'downloadUser':
        getData(data.url);
   }
    self.close();
}, false);

你想解决的问题是什么?会发生什么?会发生什么?什么都不会发生。webworker应该从server.php获取数据,并将其传递回主页,然后将其写入DOM。问题是,当我运行它时,什么也得不到。没有错误,也不知道什么坏了。
function getData(url) {
var req = new XMLHttpRequest();

//expect json
    req.open('GET', url);
    //  req.send(null);        // remove this line from here.
    req.onreadystatechange = function () {
        if (req.readyState == 4) {
            if (req.status == 200) {
                self.postMessage(req.responseText);
            }
        }
    }
    req.send(null);        // make the request after your readystatechange
                           // handler is set up.
} 

self.addEventListener('message', function (e) {
  var data = e.data;
  switch (data.cmd) {
    case 'downloadUser':
        getData(data.url);
   }
    self.close();
}, false);