将ajax函数添加到多个元素

时间:2012-01-23 19:52:23

标签: php codeigniter

我正在使用Codeigniter,似乎有点卡住了一个功能。我在主页上有一个标题列表:

<?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>

我想从http://mysite.com/index.php/home/show/9/comm加载myDiv div中的内容。视图节目将根据url中的id(9)和类别(comm)显示数据:

<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);

1 个答案:

答案 0 :(得分:0)

您已将项目ID硬编码到loadXML doc函数中,因此无论您何时从中调用它,它都将始终获取相同的数据。您需要传递与单击按钮关联的项目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做ajax很容易(你的整个loadxmldoc函数可以用jquery简化为 SINGLE 行)。您还可以消除将项ID嵌入函数调用的需要,并使用一些简单的dom查找直接从网页的dom中获取相关的id。