2012-12-06 3 views
1

내가 양식을 렌더링 내 ProjectsController에서 create() 방법을 가지고 사용하여 데이터를 저장 AJAX :동일한 작업에서 양식 렌더링과 아약스 응답을 처리하는 방법은 무엇입니까?

class ProjectsController extends AppController 
{  
    public function create() 
    { 
     if ($this->request->is('post')) 
     { 
      $this->Project->create(); 
      $this->request->data['Project']['created_by'] = $this->Auth->user('id'); 
      if ($this->Project->save($this->request->data)) 
      { 
       ... 
      } else { 
       ... 
      } 
     } 

    } 

어떻게 난 그냥 데이터가 저장되어있는 경우 성공 메시지를 전달하고 또한 그것이 아니라면 내 양식을 렌더링 할 수 아약스 요청? autoRender을 설정할 수 없습니다. 양식을 아직 렌더링해야하므로 false가됩니다.

jax 요청을 처리하는 가장 올바른 방법입니까? 그렇지 않다면 어떻게해야합니까? AJAX를 감지

+0

요청이 ajax임을 나타 내기 위해 post 매개 변수를 사용합니다. –

답변

1

: 당신은 아약스 승/싶습니다 어떤

if($this->request->is('ajax')) { 

이해야 할, 그리고 '다른'명백한 나머지는 할 :

당신은 사용할 수 있습니다.

그것을 다루기 :

아마 이런 식으로 뭔가 :

if ($this->request->is('ajax')) { 
    //process the ajax response 
    $this->render('/Ajax/json'); 

} else { 
    if($this->request->is('post')) { 
     //process the post 
    } 
    //set variables for the view...etc etc 

} 

또 다른 옵션 - 별도의 기능 :

또는, 단지 두 개의 서로 다른 작업을하는 것도 매우 흔한 일 하나는 아약스이고 다른 하나는 당신이 원하는 것입니다. 내가 if() 블록을 가지고 있지 않기 때문에 내가 좋아하는 방식이다. 그러나 - 각자 자신에게, 그리고 나는 두 가지가 규칙적으로 사용되는 것을 보았습니다.

public function create_ajax() { ... } 

public function create() { ... } 
+0

아주 좋은 대답입니다! Thx –

+0

Np - 도와 드리겠습니다! – Dave

관련 문제