建立:
我正在做一个ajax-jsonp调用,它工作正常。此的回调函数更改变量“ myVaraible”的值。在调用之后,有一些if-else逻辑对“ myVaraible”的值起作用。
这是代码:
<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调用完成。简而言之,在两个alert方框中,alert("after myfunction");先执行然后执行alert("inside jsonpCallbackFn");
alert
alert("after myfunction");
alert("inside jsonpCallbackFn");
如您所见,我已经设置了async: false,,但是看起来并没有按预期工作。谁能告诉我我在做什么错?另外,我不确定是否已正确解释了整个情况,请让我知道是否需要更多信息。
async: false,
非常感谢。
从$ .ajax文档中:
跨域请求和dataType:“ jsonp”请求不支持同步操作
因此,您需要在回调中放入任何依赖于请求结果的内容。