2013-10-14 35 views
4

我有一個內部多選的表單。在提交時我有這樣的功能:jquery serializearray以JSON多選形式

$("#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有多個值。

現在在得到被稱爲PHP函數我讀了所有的數據後,它straght寫入文件:

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腳本?有沒有更好的方式來使用我已經是我的功能(如可選參數?)或者我必須運行一個循環周圍的所有值,並找到選項值,並將它們放入一個數組,然後發送到PHP與JSON?

希望我設法解釋自己, 謝謝 詹姆斯

+0

嘗試var_dump($ _ POST []); – Hackerman

+0

同樣的結果。我跑了var_dump($ this-> input-> post());因爲codeIgniter似乎不喜歡我使用$ _POST [] – James

+0

和var_dump($ _ POST); ? – Hackerman

回答

4

找到了解決辦法。問題不是jQuery或JSON,它只是在HTML中。當您有:

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

你必須使用富[],這將成爲價值的jQuery開發方面的數組,它會留喜歡它,當你是JSON來PHP :) 所以上面的例子中變得:

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