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);