2012-04-25 95 views
3

當通過AJAX提交時,我有一個表單提交給submit_ajax方法。現在,當我將它作爲AJAX請求接收時,我想返回一個JSON對象。使用AJAX與MVC(CodeIgniter)回顯響應的正確方法

在這種情況下,我有兩個選擇。遵循MVC模式,什麼會被認爲是正確的方式?

選項1 回聲它從控制器

class StackOverflow extends CI_Controller 
{ 
    public function submit_ajax() 
    { 
     $response['status'] = true; 
     $response['message'] = 'foobar'; 
     echo json_encode($response); 
    } 
} 

選項2設置,從所述控制器接收的數據並回它的圖。

class StackOverflow extends CI_Controller 
{ 
    public function submit_ajax() 
    { 
     $response['status'] = true; 
     $response['message'] = 'foobar'; 
     $data['response'] = $response; 
     $this->load->view('return_json',$data); 
    } 
} 

//return_json view 
echo json_encode($response); 
+2

我意識到這不是你要求的,但作爲一個附註,[Output class](http://codeigniter.com/user_guide/libraries/output.html)提供了一個方便的方法來設置適用於JSON響應的MIME類型:'$ this-> output-> set_content_type('application/json') - > set_output(json_encode(array('foo'=>'bar')));' – 2012-04-25 12:29:16

回答

3

約笨的偉大的事情是,在大多數情況下,它是由你自己來決定哪一個你'更舒服。

如果你(和你的學院)喜歡通過控制器回聲,去吧!

我個人通過Controller迴應ajax回覆,因爲這很容易,並且您收集了所有簡單的腳本,而不必打開視圖文件來確認一個明顯的json_encode()

在這種情況下,我唯一能看到它使用視圖的邏輯是,如果您有2個視圖文件,例如echo的json和XML。那麼將相同的價值傳遞給這些視圖並獲得不同的結果可能會很好。

+0

我做了相同。我通過控制器迴應ajax。 – PaulM 2012-04-25 10:28:24

1

通常當你必須在ajax funnction上顯示成功的東西時,你需要標誌意味着一些消息。並根據你顯示或播放成功的信息。現在不需要創建額外的視圖。控制器中的簡單回聲json_encode()就足夠了。這很容易操縱。

2

根據MVC模式的正確方法是在視圖中顯示數據。控制器在任何情況下都不應顯示數據。

MVC經常出現在Web應用程序中,其中視圖是由應用程序生成的HTML或 XHTML。控制器接收GET或POST 輸入,並決定如何處理它做...

來源:http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller