과거 데이터 처리는 일반적으로 form 을 이용하여 처리하였으나 요즘은 ajax 처리가 많아지면서
사용자로부터 입력이 없는 데이터처리는 form 이 아닌 스크립트로 많이 처리한다.
하지만 스크립트에 PHP로 데이터처리를 하다보면 소스코드가 지저분하게 보여질 수 있고
공통파일 처리도 어려울 수 있기에 각 정보를 특정 태그에 data 속성으로 담아주고 처리하는게 좋다.
아래는 data 속성을 이용한 스크립트 활용한 예제 소스이다.
<?php
// 데이터 아이템
$data = array(
'이름'=>'홍길동',
'학번'=>'20074869',
'학과'=>'컴퓨터공학',
'학점'=>'4.5'
);
$key = array_keys($data);
// 아이템 가공
$data_items = array('sort'=>array(),'item'=>array());
foreach($data as $k=>$v){
$data_items['sort'][] = "data-".$k.'="'.array_search($k,$key).'"'; // 순서정렬을 위한 처리
$data_items['item'][] = "data-".$k.'="'.$v.'"'; // 실제 데이터 처리
}
// 태그 노출
foreach($data_items as $k=>$v){ echo '<div id="'.$k.'" style="display:none;" '.implode(" ",$v).'></div>'; }
?>
<script src="//code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><?php // http://craftpip.github.io/jquery-confirm/ ?>
<div id="input"></div>
<script>
$(document).ready(function(e){
var item = $('#item').data();
var sort = $('#sort').data();
var input = new Array();
$.each(item,function(i,v){
if( typeof v != 'undefined'){
input[sort[i]] = i+': <input type="text" name="'+i+'" value="'+v+'"/>';
}
});
// input div 에 입력값을 출력
$('#input').append(input.join("<br>"));
// ajax 처리가 필요할경우
$.ajax({url:'/', data:item, dataType:'json',type:'post'})
.done(function(e){ /* 결과 */})
});
</script>