0

目标:
使用 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。表行数。

当用户从下拉列表中选择特定选项时,例如“APPLE”,在Product列中row 1,然后使用 AJAX 使用与第一列中选​​择的产品相关的选项更新sales mode相同的相应列。row 1APPLE

也就是说,根据Product列中的选项,列中的选项sales mode会改变。(反之亦然)。

我面临的问题是,每当我选择一个新的不同产品时,在表格的第二行中,第一行的sales mode列也会根据第二行的Product选择发生变化。

第一步:

No.  Product   sales mode
---  ----      ----------
 1   Apple     EXPRESS
 2   (Select)  (Select)

当我接下来执行此操作时[Orangeproduct列中选择选项]:

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 相当陌生]

感谢您的帮助,建议。如果您需要更多信息,请告诉我。

4

1 回答 1

2

问题在于,在您的 html 中,您将id所有销售模式下拉列表设置为txtHint. 除了无效的 html 之外,它还会导致您的 ajax 回调始终使用该 id 更新它找到的第一个元素,在您的示例中恰好是 Apple 的那个。你想要做的是给他们每个人一个唯一的 id,并在你的回调中使用它。

于 2013-03-02T15:29:42.140 回答