PHP経由でロードされるページがあります。ページ内の要素の 1 つは<li>
、onclick イベントを持つ です。例<li onclick="dynamiccall('1');">blah</li>
。要素をクリックすると、ajax 呼び出しが発行され、html 出力がページに挿入されます。タグは次のようになります<li onclick="getubilling('1');">blah</li>
。
生成された要素を onclick 関数 getubilling('1'); でクリックすると、ajax 呼び出しが php スクリプトに送信されます。getubilling の 2 番目の関数のクエリ パラメータは 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 変数がブラウザーでレンダリングされると、リテラル値 1 ではなく [object mouseevent] になることです。
私はこの例に従って いましたが、私が見ることができる唯一の違いは、私の例が動的要素を dynamicEvent 関数に渡すことを提供していないことです。
私は何が欠けていますか?アドバイスをいただければ幸いです。