在javascript ajax调用后调用jquery

时间:2013-09-22 14:52:18

标签: javascript jquery ajax

我有这个返回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?

2 个答案:

答案 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();
    });
}