我正在使用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);
答案 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。