我有这个返回ajax请求的javascript代码
function showUser(str)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("lister").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","popup.php?qq="+str,true);
xmlhttp.send();
}
我尝试执行一个无法完成的jquery,除非ajax请求返回,但它无法正常工作
$('#scrollbar2').tinyscrollbar();
那么我应该如何在ajax加载后执行最后一个jquery?
答案 0 :(得分:2)
设置lister
的{{1}}:
innerHTML
但是既然你有jQuery,为什么不使用它的Ajax功能呢?
document.getElementById("lister").innerHTML = xmlhttp.responseText;
$('#scrollbar2').tinyscrollbar();
答案 1 :(得分:0)
在onreadystatechange
回调中添加jQuery调用。原因是ajax异步完成 (根据其名称)。可以这样想:
onAjaxComplete = function () {
// this will run second
}
// this will run first
所有依赖于ajax调用结果的工作必须在回调中。
此外,既然你正在使用jQuery,你也可以使用他们的ajax API,这要简单得多。
function showUser(str) {
$.get("popup.php", "qq=" + str).done(function (responseText) {
$("#lister").html(responseText);
$("#scrollbar2").tinyscrollbar();
});
}