| 제목 | ajax data 결과값 컨트롤러 넘기기 문의 | ||
|---|---|---|---|
| 카테고리 | JavaScript | ||
| 글쓴이 | 아이언맨 | 작성시각 | 2023/03/14 15:30:24 | 
|  | |||
| 안녕하세요. 고수님등 소스한번 확인 부탁드립니다. 뷰페이지에서 결과값은 정상적 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 값을 저장해 두어야 나중에 사용할수 있습니다.
 
 |