4

内部に複数選択のあるフォームがあります。送信時に私はこの機能を持っています:

$( "#addTrainForm" ).submit(function( event ) {
    var dataString = $(this).serializeArray();
    console.log(dataString);
    event.preventDefault();
    $.ajax({  
        type: "POST",  
        url: "/index.php/trainings/insertTraining",
        data: dataString,
        dataType: 'json',
        success: function(data) {  
            $("div#addModal").hide();
            location.reload();
        }  
    });
    return false;
});

コンソールログが表示されるようになったところで、次のようになります。

0: Object
name: "date"
value: "14/10/2013 16:22:46"
__proto__: Object
1: Object
name: "pool"
value: "1"
__proto__: Object
2: Object
name: "repeat_0"
value: "1"
__proto__: Object
3: Object
name: "distance_0"
value: "1"
__proto__: Object
4: Object
name: "style_0"
value: "1"
__proto__: Object
5: Object
name: "change_0"
value: "1"
__proto__: Object
6: Object
name: "time_0"
value: "1"
__proto__: Object
7: Object
name: "options_0"
value: "1"
__proto__: Object
8: Object
name: "options_0"
value: "2"
__proto__: Object
9: Object
name: "repeat_1"
value: "2"
__proto__: Object
10: Object
name: "distance_1"
value: "2"
__proto__: Object
11: Object
name: "style_1"
value: "1"
__proto__: Object
12: Object
name: "change_1"
value: "2"
__proto__: Object
13: Object
name: "time_1"
value: "2"
__proto__: Object
14: Object
name: "options_1"
value: "4"
__proto__: Object
15: Object
name: "options_1"
value: "5"
__proto__: Object
16: Object
name: "options_1"
value: "6"

options_0 と options_1 に複数の値があることがわかります。

get が呼び出された php 関数で、すべての投稿データを読み取り、ファイルに直接書き込みます。

public function insertTraining(){
    $data=$this->input->post();
    $this->baselib->logIt(print_R($data,true));
}

私のoptions_0とoptions_1には最後の値しかありません。値の配列やカンマ区切りの文字列などを期待していました。テキスト ファイルのログは次のようになります。

Array
(
    [date] => 14/10/2013 16:22:46
    [pool] => 1
    [repeat_0] => 1
    [distance_0] => 1
    [style_0] => 1
    [change_0] => 1
    [time_0] => 1
    [options_0] => 2
    [repeat_1] => 2
    [distance_1] => 2
    [style_1] => 1
    [change_1] => 2
    [time_1] => 2
    [options_1] => 6
)

options_0 と options_1 のすべての値を PHP スクリプトに取得するにはどうすればよいですか? 私がすでに使用している関数を使用するより良い方法はありますか (オプションのパラメーターなど?)、またはすべての値の周りでサイクルを実行し、オプションの値を見つけて配列に入れ、json で PHP に送信する必要がありますか?

うまく説明できてよかったです、ありがとう、ジェームス

4

1 に答える 1

4

解決策を見つけました。問題は jquery でも JSON でもなく、HTML だけです。あなたが持っている場所:

<select multiple id="..." name="foo">

foo[] を使用する必要があり、それは jquery 側で値の配列になり、JSON を PHP に送信してもそのままになります :) したがって、上記の例は次のようになります。

<select multiple id="..." name="foo[]">
于 2013-10-14T15:26:49.023 に答える