0

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

4

2 回答 2

2

设置后将其放入回调listerinnerHTML

document.getElementById("lister").innerHTML = xmlhttp.responseText;
$('#scrollbar2').tinyscrollbar();

但是既然你有 jQuery,为什么不使用它的 Ajax 功能呢?

$.ajax({
    url: "popup.php",
    data: { qq: str },
    dataType: "text",
    success: function(response) {
        $('#lister').html(response);
        $('#scrollbar2').tinyscrollbar();
    }
});
于 2013-09-22T14:53:26.117 回答
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();
    });
}
于 2013-09-22T14:57:52.267 回答