2

オブジェクトで満たされたこの配列を渡そうとしています:

var steps = [
    {
        bla: blu,
        bla: blu,
        bla: blu
    },
    {
        // etc.. 3 more times same format
    }
];

jQuery の $.ajax() 関数を使用して、私の codeigniter コントローラーに。

私はこのようにしてみました:

$.ajax({
    url: base_url + 'index.php/worldmap/ajax/start_travelling',
    type: 'POST',
    data: {
        steps: steps
    },
    success: function(response){
        console.log(response);
    }
});

しかし、typeError が発生し、コントローラーに渡されるデータ オブジェクトはキー => 値の形式でなければならないことがわかりました。単一のオブジェクトを取ることを読みました。

したがって、ステップ数と個々のステップを渡した場合、それらを codeigniter コントローラーの配列に再度まとめると考えました。

だから私は次のようになりました:

var dataToSend = {
    num_steps: steps.length
};

var i = 1;

$.each( steps, function( index, value ) ){
    dataToSend.step+i = value; // I want the key to be step_1, step_2 etc..
    i += 1;
};

$.ajax({
    url: base_url + 'index.php/worldmap/ajax/start_travelling',
    type: 'POST',
    data: dataToSend,
    success: function(response){
        console.log(response);
    }
});

しかし、おそらく推測できるように、.step + 1は機能していないようです。私がやろうとしていることをするための正しい構文は何ですか? または、マルチレベル配列を私のciコントローラーに渡すより良い方法を誰かが知っている場合は、共有してください:D

4

1 に答える 1

0

JSON オブジェクトは正しく形成されています。PHP からデータを読み取ることができるはずです。PHP コードを示す詳細情報を提供できます。

欠けている可能性がある唯一のことは、データを文字列化することです。

var steps = [
    {
        bla: blu,
        bla: blu,
        bla: blu
    },
    {
        // etc.. 3 more times same format
    }
];

var dataToSend = { steps: steps };

$.ajax({
    url: base_url + 'index.php/worldmap/ajax/start_travelling',
    type: 'POST',
    data: JSON.stringify(dataToSend),
    success: function(response){
        console.log(response);
    }
});
于 2013-10-12T08:50:33.367 に答える