CI 묻고 답하기

제목 CI에서의 ajax post
글쓴이 마카바 작성시각 2015/12/21 23:12:40
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 15728   RSS

ajax post를 어떻게 써야하는지 궁금하네요 

제가 쓰고 있는 방식을 예를 들면,

 

$.post("/shop/additem/",{user: userid, item: itemid });

 

이렇게 하고 

 

'shop' controller에서 

 

public function additem(){

$this->load->database();

$this->load->model_item();

$this->model_item->add($this->input->post());

}

 

이런식으로 모델을 불러주고 

 

model에서는 

 

public function add($data){

$this->db->insert("sometable",array("user"=>$data["user"], "item"=>$data["item"]));

 

}

 

이런식으로 해줍니다. 

제가 봐도 뭔가 이상한 사용인 것 같아서 

원래는 어떻게 쓰는것이 맞는것인지 

여쭤봅니다

 

정리를 하자면 view(ajax post)->controller->model

이런 순서로 갑니다.

 다음글 파일 업로드 관련 질문입니다. (3)
 이전글 바로밑에 조회수 카운트 의문점 다시 문의 드려요. (2)

댓글

kaido / 2015/12/22 08:37:38 / 추천 0

보편적이진 않지만, 사용 할 수 있는 문법입니다.

다만 해당 방법으로 사용 하실려면 ajax에서  serialize() 직렬화 하셔야 합니다.

 

 

 

변종원(웅파) / 2015/12/22 09:54:25 / 추천 0

주요 데이터라면 인증도 추가되어야 하고 csrf도 적용하는걸 고려해보심이.. ^^

마카바 / 2015/12/23 01:11:21 / 추천 0

안녕하세요 kaido님.

serialize 라는 키워드를 알려주셔서 감사합니다 

serialize를 사용하지 않으면 안되는 이유가 있나요? 

궁금합니다 ^^

마카바 / 2015/12/23 01:14:07 / 추천 0

안녕하세요 웅파님 댓글 달아주셔서 감사합니다 

인증과 csrf 도 찾아서 적용해보아야겠습니다. 

ajax 통신에 보안을 적용해야지 해야지 하면서 아직 제대로 알아보지 못했네요 

감사합니다

그리고 kaido님께서 일반적인 방법은 아니라고 하셨는데 일반적인 경우에는 

코드이그나이터 상에서 ajax post를 해야할 때 어떻게 사용하나요??

물어볼 사람이 없어서 지금까지 그냥 막 썼더니 궁금합니다!!

 

 

kaido / 2015/12/23 09:56:14 / 추천 0

serialize  를 꺼낸 이유는 예제 코드에 값을 받아 내는 부분이 없는데다, 값을 그대로 받아서 배열로 처리 하시길래 꺼낸 이야기입니다.

그리고 serialize  로 처리 하기 시작하면  코드가 간편해 지긴 합니다.

 

보통 ajax 통신은 가능하면 파라메터를 통으로 모델로 넘기지 않아요.

넘겨줄 것을 예상 해놓고 설계를 합니다.

모델로 바로 넘기지 않고 그전에 컨트롤러에서 파라메터 값을 일일이 받아와서 검증 절차를 거칩니다.

검증 미스일 경우에는 모델을 불러오기 전에 미리 검증 오류라고 리턴 값을 줘 버립니다.

 

csrf 적용 방법은 포럼에서 검색 하시면 사용 방법이 나옵니다.