1

Jquery を使用してデータを php ファイルに渡していますが、$_REQUEST 配列に追加の項目が含まれていることを除いて、すべてがうまく機能しているようです。

これは次の形式です。

<form id = "filter">
 <input class="hook1" type="checkbox" value="115" name="0"> bla blah <br >
 <input class="hook1" type="checkbox" value="116" name="1"> blah blah      <br >
 <input class="hook1" type="checkbox" value="107" name="2"> stil blah blah 
</form> 

これはJqueryです:

 <script>
 $(document).ready(function(){  
 $("#filter").change(function()
 {
var str = $("#filter").serialize();

 alert( str );

 $.ajax({
        url: "filter_trim.php",
        type: "POST",
    dataType:"json",
       data: str,
       success: function(data){
            // do something with returned data
        }
 });
 });
 });
 </script>

Firebug を使用する var_dump($_REQUEST) は、Firebug のコンソールを使用して、2 つのチェック ボックスの場合にこれを出力します。VAR_DUMP($_REQUEST)= array(3) { [1]=> 文字列(3) "116" [2]=> 文字列(3) "107" ["SQLiteManager_currentLangue"]=> 文字列(1) "2"

この最後のアイテムがどこから来ているのか、私にはわかりません。それは正常である可能性があり、データの配列を渡すのは初めてなので、今だけ見ています。

php ファイル filter_trim.php は次のように開始します。ご覧のとおり、$_REQUEST 配列の望ましくない最後の項目を取り除くために、array_pop() を使用する必要がありました。

<?php
 $connect = mysql_connect("localhost", "root", "root");
 mysql_select_db("cars");
 $trimids = array();
 var_dump($_REQUEST);

 array_pop($_REQUEST);
 $trimids = $_REQUEST;
 $trimids = implode(",", $trimids);

ご意見をお待ちしております。

ありがとう

4

1 に答える 1

1

チェックボックスに名前を割り当てることを実際に検討する必要があります。そうすれば、フォームをシリアル化するときに、次のような操作しやすい連想配列が得られます。

<form id = "filter">
 <input name="hooks[0]" class="hooks0" type="checkbox" value="115">  bla blah <br >
 <input name="hooks[1]" class="hooks1" type="checkbox" value="116"> blah blah      <br >
 <input name="hooks[2]" class="hooks2" type="checkbox" value="107"> stil blah blah 
</form> 

次に、PHPで:

 $connect = mysql_connect("localhost", "root", "root");
 mysql_select_db("cars");

 $trimids = is_array($_REQUEST['hooks']) ? $_REQUEST['hooks'] : array();
于 2013-03-13T07:04:11.223 に答える