질문
Q #11530
ajax , json 통신 문제
헤덥
2014-08-07 16:20:07
/////////////input tag////////////
<input type="text" class="form-control" id="email" name= "email" placeholder="email을 입력해 주세요." value="" /><i class="icon-envelope"></i>
<input type="text" class="form-control" id="name" name= "name" placeholder="이름을 입력해 주세요." value="" /><i class="icon-user"></i>
<input type="password" class="form-control" id="password" name="password" placeholder="비밀번호를 입력해 주<input type="password" class="form-control" id="password_c" name="password_c" placeholder="비밀번호를 확인을 입력해 주세요." value="" /><i class="icon-lock"></i>세요." value="" /><i class="icon-lock"></i>
4개 값을 입력
///////////ajax 통신///////////////
<script type="text/javascript">
$(function(){
$('#register').on('click', function(){
var ajax_data = {"email" : $('#email').val(),
"name" : $('#name').val(),
"password" : $('#password').val(),
"password_c" : $('#password_c').val(),
"csrf_test_name" : $("input[name=csrf_test_name]").val()
}
alert( $('#email').val() + '/' + $('#name').val());
$.ajax({
type : 'post',
dataType: 'json',
url : "/my/member/ajax_register",
data : ajax_data,
success : function (data) {
alert("adfasdfasd");
}
});
});
});
</script>
///////////컨트롤러 소스//////////////////
public function ajax_register(){
// 폼 검증 라이브러리 로드
$this->load->library('form_validation');
$this->load->helper('json');
// 폼 검증할 필드와 규칙 사전 정의
$this->form_validation->set_rules('email', '이메일', 'required');
$this->form_validation->set_rules('name', '이름', 'required');
$this->form_validation->set_rules('password', '비밀번호', 'required');
$this->form_validation->set_rules('password_c', '비밀번호 확인', 'required');
if($this->form_validation->run() == TRUE ){
// form 유효성 검사 성공시
$email = trim($this->input->post('email', TRUE));
$name = trim($this->input->post('name', TRUE));
$password = trim($this->input->post('password', TRUE));
$password_c = trim($this->input->post('password_c', TRUE));
if($email AND $name AND $password AND $password_c)
{
//form 값 배열지정
$member_info = array('EMAIL' => $email, 'NAME' => $name, 'PASSWORD' => $password);
//model 디비넣기
$result = $this->member_m->insert($member_info);
if($result > 0){
//db 성공시
$this->output->set_header('Content-Type: application/json; charset=utf-8');
$json_data = array("error" => '0000' , "result" => $result);
echo json_encode($json_data);
}else{
//db 실패시
$this->output->set_header('Content-Type: application/json; charset=utf-8');
$json_data = array("error" => '0001' , "result" => $result);
echo json_encode($json_data);
}
}
}else{
// form 유효성 검사 실패시
$this->output->set_header('Content-Type: application/json; charset=utf-8');
$json_data = array("error" => '0002' , "result" => "");
echo json_encode($json_data);
}
}
ajax 통신은 성공을 하나 컨트롤러의 코드를 구동을 못시키네요
db의 값을 못넣어요 json 값도 출력이 되질 않고요 ㅠㅠ
컨트롤러 코드로 ajax통신이 아닌 페이지 이동부분에선 db에 값이 제대로 들어갔었어요
model 문제는 아닌것 같고요
아 도저히 이유를 모르겠네요.
public function _remap($method) { if(!$this->input->is_ajax_request()){ //헤더 include $this->load->view('header_v'); if(method_exists($this, $method)) { $this->{"{$method}"}(); } //푸터 include $this->load->view('footer_v'); }else{ $this->output->set_header('Content-Type: application/json; charset=utf-8'); if(method_exists($this, $method)) { $this->{"{$method}"}(); } } }이렇게 해결했습니다 에휴...몇시간째 삽질을