쇼쇼쇼쇼쇼쇼
80
2018-04-17 17:40:14 작성 2018-04-17 17:54:33 수정됨
3
472

submit 시 json 데이터값 못받는 문제


저장 후 EvaluationSave.jsp에서 jsonData값을 못가져옵니다.(null값)

Evaluation.jsp table 조회는 제대로 되는 것 같은데

makeJson 컨트롤하는 부분에서 뭔가 잘못된 것 같습니다.

경험치가 부족해서 찾기가 쉽지 않네요..


script 부분이고요

		function makeJson(){
			var table = $('#Eval').dataTable();
			var json = [];
            var rows = table.api().rows().data().toArray();
            $.each( rows, function( index, value ) {
				json.push(value);
			});
            return json;
               
		};
		
        $(document).ready(function() {
        
        	$.extend({ stringify : function stringify(obj) { if ("JSON" in window) { return JSON.stringify(obj); } var t = typeof (obj); if (t != "object" || obj === null) { if (t == "string") obj = '"' + obj + '"'; return String(obj); } else { var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (obj.hasOwnProperty(n)) { if (t == "string") { v = '"' + v + '"'; } else if (t == "object" && v !== null){ v = $.stringify(v); } json.push((arr ? "" : '"' + n + '":') + String(v)); } } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } } });
        
        	//jqueray validation
            $("#evaluation").validate();
        	
        	$('#btn_save').click(function(){
            	if(confirm("내용을 저장하시겠습니까?")){
            		$("#redirectURL").val('Evaluation.jsp');
            		$('#jsonData').val($.stringify(makeJson()));
            		$("#evaluation" ).submit();
            	}
            })
        
            //평가 테이블
            var table = $('#Eval').DataTable( {	
            	"stripeClasses": [],
                "info" : false,
                "data": <%= EvaluationJsonobj %>,
                "iDisplayLength": 50,
                "ordering": false,
                "searching": false,
                "paging": false,
                "columnDefs": [
                	{ "width": "10%", "targets": 8},
                	{ "width": "50%", "targets": 9},
                	{ "width": "15%", "targets": 10},
                    {
                        "targets": [ 0,1,2,3,4,5,6,7],
                        "visible": false,
                        "searchable": false
                    },           
                    {
                        "targets": [9],
                        "render" : function (val, type, row){
                        	if( val !=null){
                        	return Base64.decode(val);
                        	}                           
                        }
                    },              
                    {
                        "targets": [10],
                        "render" : function (val, type, row){
                        	if( val ==null){
                        		val = '';
                        	}
                        	return '<input type="number" step="1" min="0" max="15" name="pnt'+row['Eval_PNT'] +'" value="'+ val +'">';	
                        	}
                    },    
                ],
                "columns": [
                    { "data": "Eval_YEAR" , "className" :'Eval_YEAR'},
                    { "data": "Eval_TERM" , "className" :'Eval_TERM'},
                    { "data": "Eval_EMP_NO" , "className" :'Eval_EMP_NO'},
                    { "data": "Eval_STD_ID", "className" :'Eval_STD_ID'},
                    { "data": "Eval_RECPT_NO", "className" :'Eval_RECPT_NO'},
                    { "data": "Eval_INTVW_GRP" , "className" :'Eval_INTVW_GRP'},
                    { "data": "Eval_INTVW_SEQ" , "className" :'Eval_INTVW_SEQ'},
                    { "data": "Eval_ITM" , "className" :'Eval_ITM'},
                    { "data": "Eval_ITM_NM" , "className" :'Eval_ITM_NM'},
                    { "data": "Eval_CNT_NT" , "className" :'Eval_CNT_NT'},
                    { "data": "Eval_PNT" , "className" :'Eval_PNT'}],
                "rowGroup": {
                    dataSrc: "Eval_RECPT_NO"
                }
            } );
            
			$("input[name*='pnt']" ).change(function(){
				var row = $( this ).parent().parent();
				var data = table.row(row).data();
				data.Eval_PNT = $(this).val();				
			});
        } );    


body 부입니다.


<div class="container">
		<div class="row">
			<div class="col-xs-8">
                <button id="btn_save" type="button" class="btn btn-danger btn-xs pull-left">저장</button>
            </div>
		</div>
        <h3><b>평가</b></h3>
		<!--Evaluation Score-->
        <div class="row">
            <div class="col-xs-12">
            	<form id="evaluation" method="post" action="EvaluationSave.jsp" enctype="multipart/form-data" >
            		<div class="row">
                		<div class="col-sm-12">
                    		<table id="OutgoingEval" class="display" cellspacing="0" width="100%">
		                        <thead>
			                        <tr>
			                            <th></th>
			                            <th></th>
			                            <th></th>
			                            <th></th>
			                            <th></th>
			                            <th></th>
			                            <th></th>
			                            <th></th>
			                            <th>항목</th>
			                            <th>내용</th>
			                            <th>점수</th>
			                        </tr>
			                    </thead>
			                    <tbody>
			                    </tbody>
			                </table>
                		</div>
           			 </div>
           			 <input type="hidden" id='redirectURL' name="redirectURL" >
           			 <input type="hidden" id='jsonData' name="jsonData" >
       			 </form>
            </div>
		</div>
	</div>


0
0
  • 답변 3

  • okkyers12
    117
    2018-04-17 22:29:59 작성 2018-04-17 22:31:54 수정됨

    body HTML 코드부분에서 Eval이란 id를 가진 테이블 엘레먼트는 없고 

    <table id="OutgoingEval" class="display" cellspacing="0" width="100%">
    

    OutgoingEval만 있군요.

    0
  • okkyers12
    117
    2018-04-18 02:42:58 작성 2018-04-18 02:57:46 수정됨

    문제에 대해 설명이 부족하고

    코드도 문제해결에 도움이 될 만큼 보여주시지 않은 것 같네요.


    아무튼 보여주신 부분만으로는 

    table#Eval의 필드 값을 모두 가져와 오브젝트로 만들어 놓은 후

    EvaluationSave.jsp로 POST 데이터를 보낼 때

    jsonData에 그 오브젝트를 json으로 직렬화를 해서 담아 보낸 뒤

    처리된 값을 토대로 Evaluation.jsp로 리다이렉트 시키는 코드같은데.


    table#OutgoingEval을 어떤 목적으로 사용하는 지,

    script 부분이 어느 페이지에 있는 것인지,

    jQuery를 사용하시는데 어떤 테이블 플러그인을 사용하는지에 대한 설명도 없어서


    답변해드리기가 힘듭니다.


    아무튼 table#Eval이라는 엘레먼트는 보이지 않고 table#OutgoingEval만이 있습니다.

    소스코드를 덜 보여줘서 table#Eval 코드가 다른 곳에 있는 것인지 모릅니다만 

    그 쪽이 문제가 되어 보이네요.


    table#OutgoingEval을 table#Eval로 바꾸어 보세요. 이렇게요.

    <table id="Eval" class="display" cellspacing="0" width="100%">
    0
  • 쇼쇼쇼쇼쇼쇼
    80
    2018-04-18 09:01:10

    그부분을 바꿔도 해결이 안되는 것으로 보아 그부분의 문제는 아닌 것 같아요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.