2012-01-23 102 views
0

我使用Codeigniter,似乎有點卡住了一個功能。我主頁上的標題列表:將ajax函數添加到多個元素

<?php foreach($sqlquery->result() as $item): ?> 

    <h1><?php echo $item->name; ?></h1> 
<button onlick="loadXMLDoc()">Change</button> 
<?php endforeach; ?> 
<div id="myDiv">This content will change when button is pressed!</div> 

我想在myDiv DIV內容從http://mysite.com/index.php/home/show/9/comm加載。該視圖展示將取決於什麼ID(9),什麼類別(COMM)是在URL中顯示的數據:

<script type="text/javascript"> 
function loadXMLDoc() 
{ 
var xmlhttp; 
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("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 

xmlhttp.open("GET","http://mysite.com/index.php/home/show/9/comm ", true); 
xmlhttp.send(); 
} 
</script> 
<button onlick="loadXMLDoc()">Change</button> 

我試圖在foreach添加功能,改變了GET URL,但無法得到它工作:

xmlhttp.open("GET","http://mysite.com/index.php/home/show/<? echo $item->id; ?>/<? echo $item->cat; ?> ", true); 

回答

0

您已經硬編碼的項目編號爲DOC loadXML的功能,所以無論你來自哪裏調用它,它永遠取相同的數據。你需要與被點擊的按鈕相關聯的項目ID通過,在最低限度:

function loadXMLDoc(id) { 
        ^^--add this 
    blah blah blah 
    xmlhttp.open("GET","http://mysite.com/index.php/home/show/' + id + '/comm ", true); 
                  ^^^^^^^^^^--- add this 
    blah blah blah 
} 

<?php foreach($sqlquery->result() as $item): ?> 
    <h1><?php echo $item->name; ?></h1> 
<button onlick="loadXMLDoc(<?php echo $item->id ?>)">Change</button> 
          ^^^^^^^^^^^^^^^^^^^^^^^---add this 

除此之外,考慮切換到jQuery的。用jquery做一個jax的東西非常容易(你的整個loadxmldoc函數可以減少到使用jquery的單行行)。你也可以避免將item id嵌入到函數調用中,並使用一些簡單的dom查找來直接從網頁的dom中獲取關聯的id。