2011-11-13 65 views
-3

我有一個頁面。在該頁面的標題中,我有我的所有javascript。在頁面正文中,我有一個鏈接,它調用一個ajax http請求(我使用長手xhr而不是jquery),並且該請求將一個php表單拉到我的頁面上。javascript無法通過AJAX調用

該表單有一些選擇下拉列表,使用jquery格式化/樣式化。我遇到的問題是,當我把表單直接放在頁面中時,選擇在頁面加載時被格式化。但是,當我從頁面中刪除表單並將其拉入使用Ajax它就好像JavaScript不加載。

所以JavaScript加載時頁面加載,但是當我拉到php通過Ajax JavaScript表單到頁面不工作。選擇下拉菜單不是格式化/樣式化的。這幾乎就像JavaScript需要重新加載或什麼。

我沒有使用jQuery來撥打電話。我只是使用長手阿賈克斯。

function getPage(str) 
{ 
if (str=="") 
    { 
    document.getElementById("center").innerHTML=""; 
    return; 
    } 
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("center").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","xhr_php/get_page.php?page="+str,true); 
xmlhttp.send(); 
} 
+0

控制檯中的任何錯誤? – Alex

+0

代碼請!!!! –

+0

請參閱上面的代碼我的ajax – user982853

回答

3

jquery樣式腳本運行,然後完成。如果你希望它在你的ajax調用後重新運行,把它放在一個函數中,並在成功時調用函數。

function dostuff() 
{ 
    $('selector').css('var', 'val'); 
} 

成功的情況是狀態== 200和readyState的== 4,解僱你的JS CSS調整在那裏你插入HTML響應後。

xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     document.getElementById("center").innerHTML=xmlhttp.responseText; 
     dostuff(); 
    } 
} 
+0

你可以使用我上面的代碼發佈一個例子嗎?我一直在尋找一個「成功」的例子幾個小時,並找不到一個。我一直在尋找的是jQuery的東西,我nto使用jquery afax函數我正在使用長手。看到我上面的ajax。謝謝。 – user982853

+1

哦,這是你AJAX調用的標準部分。我會把它放在答案中,而不是評論。 –

0

原始形式,是選擇的格式化使用頁面加載運行的腳本?如果是這樣,那就是你的問題。通過ajax/after/page加載加載表單意味着onload腳本不會影響選擇。您需要在窗體加載後運行腳本。

+0

我該怎麼做? – user982853

+0

將其添加到Ajax調用的onSuccess事件中。大多數jQuery教程將告訴你如何做到這一點 –

+0

請看下面我的ajax。我沒有使用jQuery。 – user982853

0

沒有看到你的代碼,我會說,你需要使用.live().bind()以附加行爲的元素。如果您在php表單頁面上應用諸如datepicker之類的東西,爲了使該功能可用,您需要重新分配您在XHR請求的回調函數中使用XHR插入的元素。

+0

見上面我加了我的ajax。 – user982853