目标:
要在表格中的每一行的下拉框中显示一组新的,唯一的选项,请使用AJAX和PHP。
详细说明:
我有一个用PHP编写的表,其中,我在for循环中创建表的行:
代码:
<table>
foreach ($mylist as $i)
{
<tr>
<td>
echo '<select name="product[]" onchange="showItems(this.value,'.$i.')" >';
echo "<option value='APPLE'>APPLE</option>";
echo "<option value='ORANGE'>ORANGE</option>";
echo "<option value='PLUM'>PLUM</option>";
echo '</select>';
</td>
<td>
echo '<select name="sales[]" id="txtHint">';
echo '</select>';
</td>
</tr>
}
</table>
这会创建一个如下所示的表:
No. Product sales mode
--- ------- -------
1 (Drop-down list here) (drop-down list here)
2 (Drop-down list here) (drop-down list here)
有N
没有。表行。
当用户选择特定选项时,例如&#34; APPLE&#34;从Product
列的row 1
列的下拉列表中,使用与AJAX相关的选项更新相同sales mode
的相应row 1
列。在第一列中选择了APPLE
个产品。
也就是说,根据Product
列中的选项,sales mode
列中的选项会发生变化。(反之亦然)。
我面临的问题是,每当我选择一个新的不同产品时,在表格的第二行中,第一行sales mode
列也会根据第二行&#39而变化; s Product
选择。
第一步:
No. Product sales mode
--- ---- ----------
1 Apple EXPRESS
2 (Select) (Select)
下次执行此操作时[在Orange
列中选择product
选项]:
No. Product sales mode
--- ---- ----------
1 Apple EXPRESS//This is the default option for Apple
2 Orange (select)
它变成了这个:
No. Product sales mode
--- ---- ----------
1 Apple REGULAR//This is the default option for Orange
2 Orange (select)
AJAX代码:
function showItems(str,val)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
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("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?q="+str+"&val="+val,true);
xmlhttp.send();
}
我如何实现这一目标? [相当新的AJAX]
感谢您的帮助,建议。 如果您需要更多信息,请与我们联系。
答案 0 :(得分:2)
问题在于,在您的html中,您将所有销售模式下拉列表的id
设置为txtHint
。除了无效的html之外,它导致你的ajax回调总是更新它找到的那个id的第一个元素,恰好是你的例子中的Apple。你想要做的就是给每个人一个唯一的id,并在你的回调中使用它。