2013-11-03 20 views
0

我有一個通過php加載的頁面。該頁面中的一個元素是一個<li>,它有一個onclick事件。例如。 <li onclick="dynamiccall('1');">blah</li>。點擊該元素後,會發出ajax調用,並將html輸出插入到頁面中,該標記的外觀如下<li onclick="getubilling('1');">blah</li>Ajax請求生成可能用於後續Ajax請求的html。輔助請求返回[object mouseevent]而不是生成的值

使用onclick函數getubilling('1')單擊生成的元素後,ajax調用被髮送到php腳本。第二個getubilling函數中的查詢參數顯示爲1,但在傳遞給ajax調用時,它顯示爲[object mouseevent]。這是爲什麼發生?

的dynamiccall()函數定義爲在ajax.js文件遵循包含在頁面:

function dynamiccall(uid){ 
    var xmlHttp = getXMLHttp(); 
     xmlHttp.onreadystatechange = function() 
     { 
     if(xmlHttp.readyState == 4) 
     { 
      HandleResponse10(xmlHttp.responseText); 
      console.log(uid); 
      var holder = uid; 
      document.getElementById('orgcinfo').innerHTML = '<ul id="b_action_lst2"><li onclick="getuprofile('+holder+')" name="uprofile">Account Settings</li><li onclick="getubilling('+holder+')" name="billing">Billing</li><li onclick="getuchpass('+holder+')" name="chpass">Change Password</li><li onclick="getuadduser('+holder+')" name="adduser">Add User</li></ul>'; 

      var ullist = document.getElementById('b_action_lst2'); 
      var links = ullist.getElementsByTagName('li'); 

      for(var i=0;i<links.length;i++){ 
      var link = links[i]; 
      if(link.getAttribute('name')=="uprofile"){ 
       link.onclick = getuprofile; 
      } 
      if(link.getAttribute('name')=="chpass"){ 
       link.onclick = getuchpass; 
      } 
      if(link.getAttribute('name')=="billing"){ 
       link.onclick = getubilling; 
      } 
      } 
      //dothis(); 
     } 
     } 
     xmlHttp.open("GET", "ajax.php?&p=anotherreq&uid="+uid+"&n="+Math.random(), true); 
     xmlHttp.send(null); 
    } 


function getubilling(uid){ 
var xmlHttp = getXMLHttp(); 
    xmlHttp.onreadystatechange = function() 
    { 
    if(xmlHttp.readyState == 4) 
    { 
     HandleResponse10(xmlHttp.responseText); 
     console.log(uid); 
     var holder = uid; 
     document.getElementById('orgcinfo').innerHTML = '<ul id="b_action_lst2"><li onclick="getuprofile('+holder+')" name="uprofile">Account Settings</li><li onclick="getubilling('+holder+')" name="billing">Billing</li><li onclick="getuchpass('+holder+')" name="chpass">Change Password</li><li onclick="getuadduser('+holder+')" name="adduser">Add User</li></ul>'; 

     var ullist = document.getElementById('b_action_lst2'); 
     var links = ullist.getElementsByTagName('li'); 

     for(var i=0;i<links.length;i++){ 
     var link = links[i]; 
     if(link.getAttribute('name')=="uprofile"){ 
      link.onclick = getuprofile; 
     } 
     if(link.getAttribute('name')=="chpass"){ 
      link.onclick = getuchpass; 
     } 
     if(link.getAttribute('name')=="billing"){ 
      link.onclick = getubilling; 
     } 
     } 
     //dothis(); 
    } 
    } 
    xmlHttp.open("GET", "ajax.php?&p=gubilling&uid="+uid+"&n="+Math.random(), true); 
    xmlHttp.send(null); 
} 

甲請求發出到http://www.domain.com/ajax.php?&p=gubilling&uid=1&n=2212.32313

的問題是,所得到的UID變量時在瀏覽器結果呈現[object mouseevent],而不是文字值1.

我跟着這example唯一的區別,我可以看到的是,該示例不提供 將動態元素傳遞給我所在的dynamicEvent函數。

我錯過了什麼?任何建議表示讚賞。

+0

幾個問題:你爲什麼要使用內聯JS,而你爲什麼不使用jQuery中提供的'.ajax'方法,因爲您已將問題標記爲這樣? – Terry

回答

0

我懷疑這將是傳遞給onclick處理函數的事件對象的默認參數。

爲什麼不使用addEventListener作爲開始而不是內聯?

0

這是怎麼回事:

dynamiccall('uniqueid');

知道uniqueid的價值是什麼?它從哪裏得到?在這種情況下,它將採取發生的事件的值。我的建議是改變標籤看起來像這樣:

<li onclick="dynamiccall(this);" uniqueid="1">blah</li> 

那麼你可以dynamiccall設置爲:

function getubilling(elem) { 
    var uid = $(elem).attr('uniqueid'); 
... 
+0

在服務器上生成了html,包括onclick =「」。當我點擊元素dynamiccall('1');並且其功能被執行並且onclick方法被附加到列表項。當我嘗試使用onclick處理程序執行生成的項目時,它會給我[對象mouseevent]而不是原始值1. – user2355051

+0

基本上我希望有一個ajax請求使用包含另一個Ajax請求的html填充文檔。第二個ajax請求函數中的變量包含第一個ajax函數的變量。 – user2355051