CI 묻고 답하기

제목 코드이그나이터로 handsontable을 사용하고 있습니다. ajax로 데이터통신하고있는중에 질문합니다..
카테고리 CI 2, 3
글쓴이 히디니 작성시각 2017/05/20 12:56:18
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14953   RSS

안녕하세요!!!! 

제가 코드이그나이터로 handsontable를 이용해서 환율관리프로그램은 만들고 있습니다.

현재 ajax post방식으로 data를 보내서 등록을 구현하고 싶은데요... 

지금 데이터를 보내면 

Array ( [0] => Array ( [0] => 2016-01-01 [1] => 2017-05-12 [2] => 1000.0000 ) [1] => Array ( [0] => 2016-05-12 [1] => 2017-05-12 [2] => 0 ) )

이렇게 배열로 들어가게 됩니다.

여기서 제가 궁금한점은 [0] => 2016-01-01 [1] => 2017-05-12 [2] => 1000.0000 [3] => 0 [4] => 0.0000 말고

[startdate] => 2016-01-01 [enddate] => 2017-05-12 [currency] => 1000.0000

이런식으로  01234대신 제가 원하는 이름으로 바꿔서 보낼수 있는가하는 점입니다 ㅠㅠ 

ajax로 데이터통신하는걸 처음해봐서 검색도 어떻게 해야할지 몰라 여기에 질문을 드립니다 ㅠㅠㅠ

완전 생 초보라서 쉽게 설명부탁드려요!! 잘부탁드립니다 ㅠㅠ

 

밑의 소스는 handsontable 오픈소스를 이용하여 짜본 소스입니다..

 

var $container = $("#table-list");
var $console = $("#example1console");
var $parent = $container.parent();
var header = [
    "시작일자", "마감일자",
    <?php foreach ($menu['list'] as $i => $row):?>
    "<?= $row['ech_basic'] ?>:<?= $row['ech_currency'] ?>",
    <?php endforeach; ?>
];
var data = [
    <?php foreach ($list as $i => $row):?>
    [
        "<?= $row['startdate'] ?>", "<?= $row['enddate'] ?>",
        <?php foreach ($menu_basic as $a => $row_units):
        $unit = $this->db->where('ech_startdate', $row['startdate'])->where('ech_enddate', $row['enddate'])->where('ech_basic', $row_units)->where('ech_currency', $menu_currency[$a])->get('exchange')->row_array();
        if($unit != null){
        ?>
        "<?= $unit['ech_currency_unit'] ?>",
        <?php }else{?>
        "0",
        <?php } endforeach; ?>
    ],
    <?php endforeach; ?>
];
$container.handsontable({
    data: data,
    rowHeaders: true,
    colHeaders: header,
    contextMenu: true
});
var handsontable = $container.data('handsontable');

$parent.find('button[name=save]').click(function () {
    $.ajax({
        url: "/api/exchange/create",
        data: {"data": handsontable.getData()}, //returns all cells' data
        dataType: 'html',
        type: 'POST',
        beforeSend: function () {
            console.log(handsontable.getData());
        },
        success: function (res) {
            if (res.result === 'ok') {
                $console.text('Data saved');
            }
            else {
                $console.text('Save error');
            }
        },
        error: function () {
            $console.text('Save error. POST method is not allowed on GitHub Pages. Run this example on your own server to see the success message.');
        }
    });
});

 

 다음글 엑셀 다운기능 완료후 DB 입력 ? (2)
 이전글 모델은 컨트롤러에서 밖에 안불러 지나요? (2)

댓글

jcoop / 2017/05/20 14:04:38 / 추천 0
Ajax로 데이터를 버튼을 누르면 가져오는 것 밖에는 안해봐서 설명은 못하겠네요. Ajax에서는 Json형식으로 데이터를 처리한다고 들었습니다. 배열에 이름을 주는 형태이겠죠. arr[0]이 아니라, "startdate" : 2017-05-10, "enddate" : 2017-05-20 . . .
곰멍 / 2017/05/20 21:03:38 / 추천 0

var data = [];

$.each(handsontable.getData(), function(k, v) {

    var row = {};

    row.startdate = v[0];

    row.enddate = v[1];

    row.currency = v[2];

    data.push(row);

});

이런식으로 데이터를 재가공 후

data: {"data": data} ajax로 데이터를 지정하는 부분에 재가공한 변수를 넣어주시면 될 것 같습니다.