我遇到了一个奇怪的Javascript行为:
的index.html
<div id="content">
<button type="button" onclick="goDownload()">Click</button>
</div>
hello.html的的
<div id="myId">
</div>
<script type="text/javascript">
$(function() {
doStuff();
});
</script>
file.js
function goDownload() {
$.ajax({
url: "hello.html",
cache: false,
success: function (response) {
$("#content").append(response);
}
});
}
function doStuff() {
//If I wait a little bit (e.g alert/timer), the below works
//otherwise it does not
$("#myId").html("Hello from doStuff()");
}
我知道ajax调用是一个异步请求,但我不知道这在什么时候会成为一个问题。 (我知道我可以在成功回调中做我的doStuff(),但对我来说情况并非如此)。有什么想法吗?
答案 0 :(得分:1)
$.ajax
调用的结果是延迟对象(http://api.jquery.com/category/deferred-object/),因此您可以利用其方法来检测何时完成:
var downloadWaiting;
function goDownload() {
downloadWaiting = $.ajax({
url: "hello.html",
cache: false,
success: function (response) {
$("#content").append(response);
}
});
}
function doStuff() {
downloadWaiting.done(function () {
$("#myId").html("Hello from doStuff()");
});
}