PHP / XMLHttpRequest POST HTML5 Worker Almacenar json de echo en variable.
Veo muchas preguntas sobre este tema. Pero parece que estoy haciendo algo mal. Así que perdónenme por preguntar (soy un poco novato). En mi archivo PHP, imprimo lo siguiente: echo json_encode([‘msg’=>$NewTotal]);
Utilizo un trabajador HTML5 para enviar datos a un archivo PHP en mi servidor y necesito que la respuesta sea enviada de vuelta al script principal para poder volver a enviarla y establecerla como el nuevo valor para la variable Totalaccounts en el bucle.
Script del trabajador:
onmessage = function(dbs) {
console.log(dbs.data);
var Totalaccounts = dbs.data;
var DBScriptLoop = setInterval(
(function () {
DBStartWorking();
//postMessage(Totalaccounts);
}), 123000);
function DBStartWorking(){
for (var dw = 0; dw < Totalaccounts; dw++) {
setTimeout(function() {
httpRequest = new XMLHttpRequest()
var dataresponse = httpRequest.responseText;
var NewCount = dataresponse.msg;
httpRequest.open('POST', 'DostuffV1.php')
httpRequest.send(Totalaccounts)
postMessage(NewCount);
console.log(NewCount);
}, 1200 * dw);
}
} // End script loop
};
Script principal:
var DBScriptWorker;
function startDBScriptWorker() {
if(typeof(Worker) !== “undefined”) {
if(typeof(DBScriptWorker) == “undefined”) {
DBScriptWorker = new Worker('DBScriptWorker.js');
var php_va = "<?php echo $AccToRank; ?>";
DBScriptWorker.postMessage(php_va);
}
DBScriptWorker.onmessage = function(event) {
document.getElementById("result").innerHTML = event.data;
DBScriptWorker.postMessage(event.data);
};
} else {
document.getElementById(“result”).innerHTML = “Lo siento, tu navegador no soporta Web Workers…”;
}
}
function stopDBScriptWorker() {
DBScriptWorker.terminate();
DBScriptWorker = undefined;
}
En mi pestaña de red veo que la respuesta es esta: {“msg”:29}
Mi variable no está establecida, aparece como indefinida. ¿Qué estoy haciendo mal? Llevo horas buscando y probando…
davy.ai
Parece que estás intentando establecer la variable
Totalaccounts
en el script principal al valor demsg
en la respuesta del servidor. Para hacer esto, necesitas analizar la respuesta del servidor y establecer la variableTotalaccounts
al valor demsg
.En la función
DBStartWorking()
, puedes agregar el siguiente código después de la líneahttpRequest.send(Totalaccounts)
:javascript
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === XMLHttpRequest.DONE) {
if (httpRequest.status === 200) {
var response = JSON.parse(httpRequest.responseText);
Totalaccounts = response.msg;
}
}
};
Esto analizará la respuesta del servidor y establecerá la variable
Totalaccounts
al valor demsg
.