Wywołanie async-ajax nie działa zgodnie z oczekiwaniami
Ustawiać:
Robię wywołanie ajax-jsonp, które działa dobrze. Funkcja zwrotna tej zmiany wartości zmiennej „myVaraible”. Zaraz po wywołaniu istnieje pewna logika if-else, która działa na wartość „myVaraible”.
Oto kod:
<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>
Problem:
Wywołanie ajax pozostaje „oczekujące”, formant przesuwa się do bloku if-else (skutecznie wykonując na starej / nieaktualnej wartości myVariable). A potem kończy się wywołanie ajax. Krótko mówiąc, z 2alert
pudła,alert("after myfunction");
wykonuje najpierw, a następniealert("inside jsonpCallbackFn");
Jak widać, już ustawiłemasync: false,
, ale wygląda na to, że nie działa zgodnie z oczekiwaniami. Czy ktoś może mi powiedzieć, co robię źle? Ponadto nie jestem pewien, czy właściwie wyjaśniłem cały scenariusz, proszę dać mi znać, jeśli potrzebne są dalsze informacje.
Wielkie dzięki.