2011-04-17 86 views
3

我在使用AJAX時遇到了問題。我是新手,所以答案可能很簡單!同時使用「onclick」通過ajax調用2個函數

所以,我有這段代碼。

echo '<input type="button" onclick="opinion(1,\''.$v.'\'); op_status(1,\''.$v.'\');"/>'; 

這是用php編寫的。

,它們通過onclick事件調用的2個功能,在2周不同的HTML的div切換AJAX。我得到的是第二個功能對div的結果。

任何想法,爲什麼會發生這種情況?

謝謝!

敬請原諒,但是這是我的第一篇文章。所以這是2個(相同的,只是不同的變量)js腳本之一。

function op_status(op,pid) 
{ 
if (op=="") 
    { 
    document.getElementById("opstatus"+pid).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("opstatus"+pid).innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","post_op_stat_disp.php?ajxpid="+pid,true); 
xmlhttp.send(); 
} 

被調用的文件進行一些檢查並輸出文本,具體取決於在某個html div處的檢查。另一個js腳本完全一樣,在另一個html div上做一些其他測試並輸出一些其他文本。 :)不過輸出是在這兩個的div

+1

我們展示你的Javascript代碼可能是一個好主意;-) – 2011-04-17 17:15:21

+0

沒有足夠的信息在這裏 - 請張貼(生成)JavaScript和HTML。 – 2011-04-17 17:16:09

+1

向我們展示PHP生成的HTML也會很有用 - 我不喜歡試圖忽略引號並在我腦海中擴展變量。 – Quentin 2011-04-17 17:16:17

回答

3

首先相同的文字呼應我要補充「變種XMLHTTP = NULL;」在你的函數的頂部 - 這將在本地範圍內變量,而不是使其成爲全局性的 - 就像@David Dorward指出的那樣。這將最終分配第二個聲明的函數中的ajax請求的響應處理程序(它恰好是第二個函數),作爲兩個ajax請求的響應處理程序,並且您將獲得您描述的行爲。

如果你仍然得到相同的文本在div中,那麼我會懷疑這兩個javascript函數調用post_op_stat_disp.php而不是調用我認爲是post_opinion_disp.php的意見函數,因此它將相同的數據返回給每個div。或者(更不可能)post_opinion_disp和post_op_stat_disp返回相同的結果。

由於這個問題是不是真的要熱爾曼AJAX反而可能是一個編碼問題 - 我會建議手動導航到http:// [服務器] /post_op_stat_disp.php?ajaxid=test和您的其他網址,看看是什麼應該在兩個div中填充。

然後我會強烈建議你抽象的Ajax代碼一些常用的功能,使你沒有複製的HTTP狀態代碼和XMLHTTP實例化邏輯。雖然它可能無法幫助你解決這個特定的問題,它會如果您是@Jared Farrish的建議,使用jQuery的減少您的代碼大小沿着這些路線的東西:



    function op_status(op, pid) { 
    if (!op) return $('#opstatus' + pid).html(""); 

    $.get('post_op_status_disp.php?ajaxid=' + pid, function(r) { 
      $('#opstatus' + pid).html(r); 
    }); 
    } 

我的錢是在VAR關鍵字這將確保您獲得兩個不同的xmlhttp對象,而不是一個全局的對象。

然而,大多數已經評論 - 你可能要發佈生成的結果來幫助我們,幫助您跟蹤這個開溜了。

謝謝,讓我們知道結果如何!

+0

我想你會得到你的錢!非常感謝!!該變種的事情工作很棒!歡呼聲 – gianniskpf 2011-04-17 19:34:41

+0

沒問題,現在如果我能弄清楚在哪裏撤回我所有的互聯網錢... – 2011-04-17 20:49:23