2013-09-22 52 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