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

ajaxリクエストが返されない限り、実行できないjqueryを実行しようとしましたが、まだ機能していません

$('#scrollbar2').tinyscrollbar();

では、ajax のロード後に最後の jquery を実行するにはどうすればよいでしょうか。

4

2 に答える 2

2

を設定した後、コールバック内に配置しlisterますinnerHTML

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

コールバック内に jQuery 呼び出しを追加しonreadystatechangeます。その理由は、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 に答える