2013-09-22 113 views
0

我有它返回一个Ajax请求调用一个jQuery JavaScript的Ajax调用

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请求返回这段JavaScript代码,但它不工作

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

那么我应该怎样在ajax加载后执行最后一个jquery?

+1

如果您已经使用jQuery的,是有依赖于任何特定的原因,这'XMLHttpRequest'而不是用做AJAX的'$ .ajax'例如jQuery的方法呢? –

+0

国际海事组织,在你的水平,没有意义不使用jQuery的ajax方法。 – frenchie

回答

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

我应该把这个代码放在函数showUser(str)中? – user2765449

+0

@ user2765449:是的。 – Ryan

0

在您的onreadystatechange回调中添加jQuery调用。原因是阿贾克斯异步完成(按其名称)。可以这样想:

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

它没有工作! $(“#scrollbar2”)。tinyscrollbar();没有做任何事情!另外ajax请求不被获取 – user2765449