2011-08-22 64 views
0

AJAX只能工作一次,我必須重新加載頁面才能再次工作。我該如何解決?只有一次工作的AJAX問題

echo "<div class='unsubscribe'><a id='us$id' href='javascript:unsubscribe($id);'><img src='/unsubscribe.jpg' alt='unsubscribe' /></a></div>"; 



function unsubscribe(number) 
{ 
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("us"+number).innerHTML="<img src='/subscribe.jpg' alt='subscribe' />"; 
    } 
    } 
xmlhttp.open("GET","/unsubscribe.php?id="+number,true); 
xmlhttp.send(); 
} 
+0

我建議學習螢火蟲或Chrome開發者工具,看看究竟發生在這裏 - 您可以檢查網絡請求,查看JavaScript異常,設置斷點,並逐步查找代碼以查找問題。 – lunixbochs

+0

如果您對新技術開放,我強烈建議您使用[jQuery](http://jquery.com/)來進行[ajax調用](http://api.jquery.com/jQuery.get/ )。它看起來像這樣:'。.get(「/ unsubscribe.php?id =」+ number);' –

回答

0

更改您的HTML:使用一個onClick處理程序,而不是一個href:

<a id='us$id' href="#" onclick="unsubscribe($id);"> 

這保證了動作發生的點擊,但不會將瀏覽器重定向的目標網頁(這就是爲什麼你功能目前只會觸發一次)。

根據您的頁面佈局,你可能會發現上述結果在頁面的「混蛋」,當點擊發生 - 如果是的話,你可以嘗試恢復從單擊處理錯誤:

<a id='us$id' href="#" onclick="unsubscribe($id); return false;"> 
1

瀏覽器在用於AJAX的API中出現分歧,使用像jQuery這樣的一些維護良好的庫來編寫兼容和簡單的代碼是明智的。如果你不需要大量的功能,你可以嘗試從這個線程的其他建議。

AJAX Only Javascript Library

0

我想有一個與名字us$id$id問題。如果你不使用jQuery,那麼$符號沒什麼特別的,它是一個普通的字符。所以,us$id$id是無關的,$id只是us$id的子串。所以,unsubscribe($id)被調用一個未定義的參數。如果您想要替換us$id下的圖片,那麼這將不起作用,因爲getElementById("us"+number)將找不到該元素。

0

移動xmlhttp.open(「GET」,「/ unsubscribe.php?id =」+ number,true);在xmlhttp.onreadystatechange = function()之前。

這裏是AJAX順序:

  1. 的open()
  2. 的onreadystatechange
  3. 的send()