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」などの特定のオプションを選択すると、そのProductrow 1の対応するsales mode列が、最初の列で選択された製品row 1に関連するAJAXを使用したオプションで更新されます。APPLE

つまり、Product列のオプションに基づいて、列のオプションsales modeが変更されます(その逆はありません)。

私が直面している問題は、新しい別の製品を選択するたびに、テーブルの2行目で、2行目の選択sales modeに基づいて1行目の列も変更されることです。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はかなり新しい]

あなたの助け、提案に感謝します。さらに詳しい情報が必要な場合はお知らせください。

4

1 に答える 1

2

問題は、HTMLidですべての販売モードのドロップダウンを に設定していることですtxtHint。無効なhtmlであることに加えて、ajaxコールバックがそのIDで見つかった最初の要素を常に更新する原因となっています。これは、たまたまAppleの例です。あなたがしたいことは、それらのそれぞれに一意の ID を与え、それをコールバックで使用することです。

于 2013-03-02T15:29:42.140 に答える