Callback de requisição síncrona não funciona
Boa tarde galera do javascript.
Eu estava tendo um problema na ordem de exibição das requisições que eu estava fazendo. Estava acontecendo isso:
A ordem de exibição que eu deseja que sempre acontecesse estava aparecendo na ordem que o servidor conseguia processar
Então com isso, me falaram para criar um callback para as minhas requisições.
A ideia seria que quando a requisição com a categorias
Me passaram esse código
function requisicaoSincrona(categoria, callback){
//seu código...
function respond() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
x = document.getElementsByClassName('terceiraEtapa');
x[0].innerHTML += xmlhttp.responseText;
}
//verifica se uma função foi de fato passada, para então chama-la
if(callback){
callback.call();
}
}
}
});
Então eu comecei a fazer assim
function requisicaoSincrona(categoria, callback){
//seu código...
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
values = {"modulo":modulo,"categoria":categoria};
myJsonString = JSON.stringify(values);
xmlhttp.onreadystatechange = respond;
xmlhttp.open("POST", "classes/getData.php", true);
xmlhttp.send(myJsonString);
//como o código executado na volta da requisição é a função respond, chamamos o callback aqui
function respond() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
x = document.getElementsByClassName('terceiraEtapa');
x[0].innerHTML += xmlhttp.responseText;
}
//verifica se uma função foi de fato passada, para então chama-la
if(callback){
callback.call();
}
}
}
//a função pegaSuporte tem a ideia de fazer com que após a função 6(garantia de update) seja processada, processe a 9(suporte e consultoria)
function pegaSuporte(){
requisicao(9);
}
//primeira requisição que quero que seja exibida
requisicaoSincrona(6, pegaSuporte);
Ela me retorna esse erro
>
Uncaught DOMException: Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.
//linha do erro
xmlhttp.send(myJsonString);
**Obs: Quando eu declaro o xmlhttp antes do if, até não da o erro, mas repete umas 3 vezes o mesmo valor da requisição**
[/applications/core/interface/imageproxy/imageproxy.php?img=https://i.stack.imgur.com/Zhupw.png&key=bf75a276b9b00ff6a3d7f9cc2985185d45f1d5b3a50205a115c04a248acd25d1" style="border:0px;font-size:inherit;padding:0px;vertical-align:baseline;" />](https://i.stack.imgur.com/Zhupw.png)
[/applications/core/interface/imageproxy/imageproxy.php?img=https://i.stack.imgur.com/IGir6.png&key=a85157f433a086e68272406ce40396ef1d921458d5f7e440c3eb1e6cca084e24" style="border:0px;font-size:inherit;padding:0px;vertical-align:baseline;" />](https://i.stack.imgur.com/IGir6.png)Discussão (0)
Carregando comentários...