-1

チェックボックスからの値の配列があります。付加価値と一緒に送る必要があります。PHPで私はこれを取得しています:

> Array (
>     [0] => [object Object]
>     [1] => value )

私のコードは次のとおりです。

$.post('index.php', {'info[]': 
[$("input[name='site_select_[]']:checked"),
$(this).val()]}, function(data){data});
4

4 に答える 4

1

POST 経由で送信するものを分類してみましょう。

 {'info[]': [$("input[name='site_select_[]']:checked"), $(this).val()]}

これは次と同等です:

 {
   'info[]': [
                $("input[name='site_select_[]']:checked"), 
                $(this).val()
             ]
 }

したがって、単一のキーと値のペアの PHP 配列に変換されたオブジェクトを送信しています。

 {
    'key' : 'value'
 }

鍵は

  info[]

したがって、PHPは次のよ​​うに評価されます$result = array("info[]", $value);

そして値は

  [
      $("input[name='site_select_[]']:checked"), 
      $(this).val()
  ]

これは 2 つの値の Javascript 配列で、最初の値は JQuery オブジェクトです。

  $("input[name='site_select_[]']:checked")

thisそして2番目は、上記のものではないオブジェクトの「値」です。

  $(this).val()

したがって、PHPでは次のようになります

  $result = array("info[]", array(..Jquery object..., jqueryvalue);

ですから、Javascript と JQuery の基本について誤解していると思います。

このように機能しないことは明らかです。役に立たないデータを悪い方法で渡し、thisキーワードが文脈から外れています。信頼できる解決策については、他の回答を参照してください。

于 2012-08-16T13:20:26.483 に答える
1

JavaScript が JQuery オブジェクトを文字列化しようとすると、$("input[name='site_select_[]']:checked")「オブジェクト オブジェクト」しか得られません。より良い方法で文字列化できるカスタム オブジェクトを作成する必要があると思います。

于 2012-08-16T13:17:50.327 に答える
0

私はこれがうまくいくかもしれないと思います

{info: 
    $.merge($("input[name=*site_select_]:checked").serializeArray(), 
    [$(this).val()])
}

セレクターによって取得されたオブジェクトcheckedを配列にシリアル化しmergeてから、それらをまとめるために使用します。

私はそれをテストしていないので、これがどのように機能するかはわかりませんが、これは「学習」演習であるため、あなたはそれを見つけることができると思います。

警告:非常に迅速に書かれています。

于 2012-08-16T13:18:54.237 に答える
0

info[] を使用しないでください。info: を使用してください。

$.post(
    'index.php',
    {
        info: [$("input[name='site_select_[]']:checked"), $(this).val()]
    },
    function(data){...}
);
于 2012-08-16T13:17:10.790 に答える