在表AJAX,PHP中每行显示独立的多个ajax查询结果

时间:2013-03-02 15:11:52

标签: php ajax html-table

目标:
要在表格中的每一行的下拉框中显示一组新的,唯一的选项,请使用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]

感谢您的帮助,建议。 如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:2)

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