Chamada async-ajax não funciona como esperado
Configuração:
Eu estou fazendo uma chamada ajax-jsonp, que está funcionando bem. A função de retorno de chamada altera o valor de uma variável, "myVaraible". Logo após a chamada, existe alguma lógica if-else que funciona no valor de "myVaraible".
Aqui está o código:
<script>
function myfunction() {
$.ajax({
url: myURL,
dataType: "jsonp",
jsonp : "jsonp",
async: false,
jsonpCallback: "jsonpCallbackFn"
});
}
function jsonpCallbackFn(mydata) {
alert("inside jsonpCallbackFn");
if(something) {
// change value of a variable "myVariable";
}
}
$(document).ready(function() {
$("#preview_button").mouseover(function() {
myfunction();
alert("after myfunction");
// do some if-else logic based upon the value of myVariable which is updated by the call to myfunction()
});
});
</script>
O problema:
A chamada ajax permanece 'pendente', o controle se move para o bloco if-else (efetivamente executando no valor antigo / antigo de myVariable). E então a chamada do ajax é completada. Em suma, dos doisalert
caixas,alert("after myfunction");
executa primeiro e depoisalert("inside jsonpCallbackFn");
Como você pode ver, eu já definiasync: false,
, mas parece que não está funcionando como esperado. Alguém pode me dizer o que estou fazendo de errado? Além disso, não tenho certeza se expliquei todo o cenário corretamente, por favor, deixe-me saber se mais alguma informação é necessária.
Muito obrigado.