0

ユーザーが新しいデータを入力したり、既存のデータを編集したりできる動的に生成されたフォームがあります。フォームが送信されると、入力値が照合され、新しいかどうかに従ってグループ化されます。前者は で示されclass="new-entry"ます。

したがって、この関数は と の 2 つの配列を生成updateDataしますinsertData。どちらの配列も同様の形式です。

[
    0: {
        'id'    = 1,
        'value' = foo
    },
    1: {
        'id'    = 1,
        'value' = 'bar'
    },
    etc...
]

それらを新しい配列オブジェクトに結合して、ajax 経由でコントローラーに送信します。

var postData = {
    'update_data': updateData,
    'insert_data': insertData
};

次に、ajax 呼び出しで:

$.post(url, postData, function() { // some code });

ただし、コントローラーでは、print_r($this->input->post())orprint_r($_POST)をテストとして実行すると、 のみが返されますArray()。何も$this->input->post('update_data')返しません。

コントローラーでこれらの配列を取得するにはどうすればよいですか?

4

1 に答える 1

1

Codeigniter の問題ではありません。送信する前に、配列を適切な JSON オブジェクト (stringify) に変換します。

使用する

var postData = {
    'update_data': JSON.stringify(updateData),
    'insert_data': JSON.stringify(insertData)
};

$.post(url, postData, function() { // some code });

そしてあなたのコントローラでは、あなたはうまくいくことができます

$update_data=json_decode($this->input->post('update_data'));
$insert_data=json_decode($this->input->post('insert_data'));
于 2013-10-29T09:51:16.870 に答える