개발 Q&A

제목 ajax data 결과값 컨트롤러 넘기기 문의
카테고리 JavaScript
글쓴이 아이언맨 작성시각 2023/03/14 15:30:24
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 5095   RSS

안녕하세요.

고수님등 소스한번 확인 부탁드립니다. 

뷰페이지에서 결과값은 정상적 console.log(data); 으로 확인되었는데

form 넘기면 컨트롤러 변수값이 나오지 않습니다. 

 

<script src="<?=$site_url?>/home/assets/js/jquery-3.3.1.js"></script>

<script type="text/javascript" src="<?=$site_url?>/home/assets/js/bootstrap.js"></script>

 

<script type="text/javascript">

    $(document).ready(function(){

       

 $('#category').change(function(){ 

var id=$(this).val();

 

$.ajax({

url : "Admin_categories/get_sub_category/"+id,

method : "POST",

data : {id: id},

async : true,

cache: false,

dataType : 

success: function(data) {

console.log(data);

 var html = '';

var i;

for(i=0; i <data.length; i++){

  html += '<option value='+data[i].category_id+'>'+data[i].category_id+' '+data[i].category_code+' '+data[i].subcategory_name+'</option>';

}

$('#sub_category').html(html);

},

error: function (result) {

alert("Error");

//alert("status : " + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error);

}

 });

return false;

 });      

});

</script>

 다음글 템플릿 사용에 대해서 문의 드립니다. (2)
 이전글 hwpx 마임타입 문의 (1)

댓글

변종원(웅파) / 2023/03/14 15:45:54 / 추천 0
컨트롤러 소스도 올려주세요
아이언맨 / 2023/03/14 15:54:55 / 추천 0
public function createsub_category()
{

변수확인 값이 나오지 않음

$_POST['category_id'];
$_POST['category_code'];
 
$this->input->post('id', true); 
$data = array();
$data['category_id']              = $this->input->post('category_id');
$data['category_code']        = $this->input->post('category_code');
 
echo $data;
 
$subcategory_name      = $this->input->post('subcategory_name', TRUE);
$category_id      = $this->input->post('category_id', TRUE);
$category_code      = $this->input->post('category_code', TRUE);
 
$data = array(
'category_id'  => $this->input->post('category_id'),
'subcategory_name'  => $this->input->post('subcategory_name'),
'category_code' => $this->input->post('category_code')
);

 

$result = $this->Admin_product_model->insert_subcategory($data);
redirect('/Admin_categories', 'refresh');
darkninja / 2023/03/14 22:48:42 / 추천 0

뷰페이지 소스도 보여주세요

어떤 변수값이 넘어 오지 않나요?

category_id ?

category_code ?

뷰페이지를 보아야 할거 같은데요...

 

아이언맨 / 2023/03/15 10:10:15 / 추천 0
뷰페이지 
 
1차카테고리 선택
 
<select class="form-control" name="category" id="category">
<option>카테고리선택</option>
<?php foreach($category as $row):?>
<?if(!$_GET['category_id']) { ?>
<option value="<?php echo $row->category_id;?>"><?php echo $row->category_name;?> (<?php echo $row->category_code;?>)</option>
<?php } else { ?>
<option value="<?php echo $row->category_id;?>"><?php echo $row->category_name;?> (<?php echo $row->category_code;?>)</option>
<?php } ?>
<?php endforeach;?>
</select>
 
2차 카테고리 입력
<input type="text" name="subcategory_name" required="required" class="form-control col-md-7 col-xs-12">
 
1차 카테고리 선택하고 category_id,category_code 값을 받아서 
서브 카테고리 등록시 2차카테고리 입력저장시 category_id,category_code 값을 받아 저장 하려고 합니다.
subcategory_name 입력한 값은 정상으로 넘오옵니다.
 
category_id
category_code
 
data 값이 콜트롤러에 넘기는 방법이 문제인지요.
 
 
콘솔부분
 
0
{subcategory_id: '3', category_id: '3', category_code: '10', subcategory_name: '아수스'}
1
{subcategory_id: '4', category_id: '3', category_code: '10', subcategory_name: 'MSI'}
2
{subcategory_id: '20', category_id: '3', category_code: '10', subcategory_name: '기가바이트'}
length
3
화면결과가 나옵니다.
 
<div id="sub_category" name="sub_category">    
3 10 아수스
 
3 10 MSI
 
3 10 기가바이트
 
</div>
 
darkninja / 2023/03/15 14:27:41 / 추천 0

아직 실력이 모자라서 정확한 답을 드리긴 어렵고

제가 사용한 소스를 보여 드릴께요.

	function schedule_insert(){
        var formData = {
			'schedule_id' : document.forms['schedule']['schedule_id'].value,
			'subject'     : document.forms['schedule']['subject'].value,
			'contents'    : document.forms['schedule']['contents'].value,
			'time'        : document.forms['schedule']['time'].value,

			'type'	      : document.forms['schedule']['type'].value,
			'repeat'      : document.forms['schedule']['repeat'].value,
			'alarm'	      : document.forms['schedule']['alarm'].value,

			'schedule_lunar' : document.forms['schedule']['schedule_lunar'].value,
			'schedule_month' : document.forms['schedule']['schedule_month'].value,
			'schedule_day'   : document.forms['schedule']['schedule_day'].value,
			'schedule_check' : document.forms['schedule']['schedule_check'].value,
			
			'weekday'     : document.forms['schedule']['weekday'].value,
			'weeksdate'   : document.forms['schedule']['weeksdate'].value,
			'weeksmonth'  : document.forms['schedule']['weeksmonth'].value,
			'weekscheck'  : document.forms['schedule']['weekscheck'].value,

			'start_date'  : document.forms['schedule']['start_date'].value,
			'end_date'	  : document.forms['schedule']['end_date'].value
        };

		$.ajax({
			type  : 'POST',
			url : "<?php echo base_url(); ?>/lunar_calendar/schedule_insert",
			beforeSend: function (f) {
				disp_ajax('Insert data ...');
			},
            data : formData,
			dataType : 'json',
            success : function(schedule) {
				disp_ajax('Insert Sucess.');
				document.forms['schedule']['schedule_id'].value = schedule.schedule_id;

				document.getElementById("schedule_form_div").classList.add('active');
				document.getElementById("schedule_form_title").textContent = "일정 보기";
				document.getElementById("schedule_form_title").innerText = "일정 보기";

				document.getElementById("btn_schedule_update").disabled = false;
				document.getElementById("btn_schedule_delete").disabled = false;
				document.getElementById("btn_schedule_read").disabled = true;
				document.getElementById("btn_schedule_insert").disabled = true;
            },
			error:function(request,status,error){
				alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
			}
        });
	};
    public function schedule_insert() 
	{
		$id = $this->request->getVar('schedule_id');
		if ($id) {
			return $this->schedule_update($data);
		}	
		$date = date('Y-m-d H:i:s');
		$data = array(
			'subject' => $this->request->getVar('subject'),
			'contents' => $this->request->getVar('contents'),
			'time' => $this->request->getVar('time'),
			'repeat' => $this->request->getVar('repeat'),
			'type' => $this->request->getVar('type'),
			'alarm' => $this->request->getVar('alarm'),
			'schedule_lunar' => $this->request->getVar('schedule_lunar'),
			'schedule_month' => $this->request->getVar('schedule_month'),
			'schedule_day' => $this->request->getVar('schedule_day'),
			'schedule_check' => $this->request->getVar('schedule_check'),
			'weekday' => $this->request->getVar('weekday'),
			'weeksdate' => $this->request->getVar('weeksdate'),
			'weeksmonth' => $this->request->getVar('weeksmonth'),
			'weekscheck' => $this->request->getVar('weekscheck'),
			'start_date' => $this->request->getVar('start_date'),
			'end_date' => $this->request->getVar('end_date'),
			'reg_date' => $date,
			'modify_date' => $date,
		);	
        $id = $this->schedule_model->insertData($data); 
		$data = array(
			'schedule_id' => $id,
		);
		return json_encode((object) $data);
    }
    public function insertData($data) 
    {
        //print_r($data);
        if ($this->db
            ->table($this->schedule_table)
            ->set($data)
            ->insert()
        ) {
            //echo $this->db->getLastQuery();  
            return $this->db->insertID();
        } else {
            return false;
        }       
    }

 

darkninja / 2023/03/15 21:04:29 / 추천 0
컨트롤러에서 값을 받기위해서는
$_POST['category_id'];
$_POST['category_code'];
 
			<?php echo form_open('calendar/index', 'id="schedule" name="schedule"'); ?>

 

넘겨줄때 
var formdata = {
    category_id : document.forms['폼이름']['category_id'].value,
    category_code : document.forms['폼이름']['category_code'].value,
}
method : "POST",

data : formdata,

위와 같이 넘겨주어야 합니다.

 

'id ' 로 넘겨주면 $_POST['id'] 로 받아야 하지 않을까요?

아이언맨 / 2023/03/16 10:13:30 / 추천 0

darkninja님 답변 너무 감사합니다.

 

아래와 같이 확인하면 이런 문제가 나옵니다.

$('#category').change(function(){ 

var id=$(this).val();

alert(id);  -> category 값만  나오고

---------------------------------------------------------------------------

var formName = "form_categories1";
var data = $("form[name="+formName+"]").serialize();
alert(data);
 
경고창 category_id=&cat_id=&product_id=&category_code=&category=3
darkninja / 2023/03/16 13:17:47 / 추천 0

 

 

 

<select class="form-control" name="category" id="category"> 
<option>카테고리선택</option>
<?php foreach($category as $row):?> 
<?if(!$_GET['category_id']) { ?>
<option value="<?php echo $row->category_id;?>"><?php echo $row->category_name;?> (<?php echo $row->category_code;?>)</option>
<?php } else { ?>
<option value="<?php echo $row->category_id;?>"><?php echo $row->category_name;?> (<?php echo $row->category_code;?>)</option>
<?php } ?>
<?php endforeach;?> 
</select>

<input type="text" id="category_code" name="category_code"  value="<?php echo $row->category_code; ?>">
<input type="text" id="category_name" name="category_name"  value="<?php echo $row->category_name; ?>">

<input type="text" name="subcategory_name" required="required" class="form-control col-md-7 col-xs-12"> 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

var formName = "form_categories1";
var category= $("form[name="+formName+"][category]");
var category_code = $("form[name="+formName+"][category_code]");
var category_name= $("form[name="+formName+"][category_name]");

alert(category_name);

위의 코드가 동작할지는 모르겠지만
이런식으로 input에서 category_code 값을 저장해 두어야 나중에 사용할수 있습니다.