設定:
私は正常に動作している ajax-jsonp 呼び出しを行っています。これのコールバック関数は、変数「myVaraible」の値を変更します。呼び出しの直後に、「myVaraible」の値に作用する if-else ロジックがあります。
コードは次のとおりです。
<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>
問題:
ajax 呼び出しは「保留中」のままで、制御は if-else ブロックに移動します (myVariable の古い/古い値で効果的に実行されます)。そして、ajax 呼び出しが完了します。つまり、2 つのalert
ボックスのうち、alert("after myfunction");
最初に実行し、次にalert("inside jsonpCallbackFn");
ご覧のとおり、既に を設定していますがasync: false,
、期待どおりに動作していないようです。誰が私が間違っているのか教えてもらえますか? また、シナリオ全体を適切に説明したかどうかもわかりません。さらに情報が必要な場合はお知らせください。
どうもありがとう。