1

現在、選択リスト (リスト全体) を php ページに渡し、リストから個々の値を取得して動的 SQL クエリを実行しようとしています。selectItems を渡しましたが、echo を実行すると、

[オブジェクト HTMLSelectElement]

また、selectItems.value を渡そうとしましたが、3 つのリスト項目の 1 つしか渡されませんでした。過去 1 日を検索しましたが、あまり成功しませんでした。これにアプローチする方法がよくわかりません。どんな助けでも大歓迎です。

現在の選択リストは次のとおりです。

    <select multiple name="selectItems" size="6" id="selectItems">
    <option value="value1" selected="selected">value1</option>
    <option value="value2" >value2</option>
    <option value="value3" >value3</option>
    </select>

    <input type=button id="opener" value='Clickme' onclick="showTable(selectItems, 'getquery.php')">

以下の showtable 関数のスニペットです。基本的には、リスト (q で示される) とページの場所を渡そうとしています。

xmlhttp.open("GET",page+"?q="+str,true);
xmlhttp.send();
4

2 に答える 2

2

最初の onclick メソッドは、最初は Select ノードを通過していませんでした。その後も、実際のノード自体を介して PHP に送信しています。抽出された値ではありません。

dm03514 自身が言ったように、クエリ文字列を PHP 配列の形式でシリアル化できるため、PHP レベルでより簡単に管理できます。

jsFiddle: http://jsfiddle.net/7dtXs/1/

    <script type="text/javascript">
    function showtables( selectObj, page ) {

        var xmlhttp = new XMLHttpRequest();
        var str = "";

        var AllOptions = selectObj.options;
        var SelectedOptions = selectObj.selectedOptions;

       /**
        *   Iterate through each Object that is selected
        *   From here you can pick out:
        *       - id name
        *       - value
        *   etc, to form a query string 
       **/
       for ( var x = 0; x < AllOptions.length; x++ ) {
           str +=  ( !x ? "" : "&" ) 
                   + AllOptions[x].value + "=" + AllOptions[x].textContent;
       }

      /** 
       *    if apples & shaz.. selected   
       *    str now contains:
       *        &value1=Apples&vsalue2=shazbots
      **/
      console.log( str );

      xmlhttp.open("GET", page + "?" + str, true);
          xmlhttp.send();
      }
  </script>

    <select multiple name="selectItems" size="6" id="selectItems">
        <option value="value1">Value1</option>
        <option value="value2">Value2</option>
        <option value="value3">Value3</option>
    </select>

    <!-- Passing through ID.selectedOptions to function -->
<input type="button" id="opener" value="Clickme" onclick="showtables( document.getElementById('selectItems'), 'getquery.php' );">

さらに、あなたの例には誤った引用符がありました。それがあなたの例にあるのかコードにあるのかはわかりません。たとえば、type=button は type="button" である必要があります。

あなたの質問を正しく理解できたと思います! :)

于 2013-03-08T22:23:03.563 に答える
0

HTML値をシリアル化できます

PHPが探しているのは、値の配列です。

http://example.com/?selectItems[]=test&selectItems[]=test1

これにより、php ですべての値を配列としてアクセスできるようになります。

今それを行うための最良の方法について。バニラ JavaScript の使用方法がわかりません。選択したすべての値をループして、独自のクエリ文字列を作成できますか?

于 2013-03-08T21:05:28.570 に答える