我有以下代码:
在里面我把2 alert()
用于调试。
为什么alert2会在alert1 ???之前显示
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$.ajax({
type: "POST",
url: "ManagerBaseKit.aspx/GetDummyVersions",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
var items = [];
$.each(result.d.Version, function (key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ol/>', {
'id': 'selectable',
html: items.join('')
}).appendTo('.baseVersionsTest');
alert('1'); // should be alerted 1st
}
});
alert('2'); // should be alerted 2nd
});
</script>
编辑:
我怎样才能使$.ajax
成为第一件事?
答案 0 :(得分:2)
当文档准备就绪时触发Alert2,并在成功的ajax请求后触发Alert1。你的代码可以用以下形式重写:
<script language="javascript" type="text/javascript">
$(document).ready(function () {
alert('2'); // Still the same functionality
$.ajax({
type: "POST",
url: "ManagerBaseKit.aspx/GetDummyVersions",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
var items = [];
$.each(result.d.Version, function (key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ol/>', {
'id': 'selectable',
html: items.join('')
}).appendTo('.baseVersionsTest');
alert('1'); // should be alerted 1st
}
});
});
</script>
现在您可以看到为什么首先触发Alert2(以及准备好文档)
答案 1 :(得分:0)
您可以通过将async设置为true或false来以同步/异步方式调用ajax函数。
$.ajax({
url : yourURL,
async : false,
...
});