2016-10-16 45 views
0

我有一個包含來自我的客戶的內部消息的收件箱。使用jQuery在MVC上傳輸數據的最佳方法?

$.ajax({ 
     url: 'messages/retrieve/' + client_id, 
    }).done(function(data) { 

     $('.messages-dialog').html(data); 

    }); 

我的控制器應返回與JSON數據的變量:當我在列表上單擊該名我使用jQuery $.ajax所以請求?我知道它應該把它放在一個視圖上,我應該在那裏處理它,但如果是客戶端,該怎麼做?

我不知道是否更好地處理和創建html結構到控制器中,而不是隻加載.messages對話框與jQuery.html();

對不起,我在這個問題上有點失落。

+0

最好的做法是讓你的控制器返回一個包含所有數據的json,然後從jquery中簡單地解析數據並使用javascript @ – Cristian

+0

@Cristian處理視圖的創建,爲什麼這是「最佳實踐」?任何可信的來源? – Dekel

+0

考慮一下這樣一個事實,只要你想改變你的數據顯示方式,你不必觸摸任何服務器端代碼,這足以處理不同的jQuery腳本中的數據 – Cristian

回答

0

您可以使用jQuery.ajax()方法,如上例所示。另請參閱官方文檔,例如http://api.jquery.com/jquery.ajax/

此外,您可以使用jQuery.get()和jQuery.post()方法,具體取決於您將如何以及將發送什麼。您可以使用此方法,如下圖所示:

var url = 'messages/retrieve/' + client_id; 
$.post(// for example 
    url, 
    function(data) { 
     $('.messages-dialog').html(data); 
    }); 

見與這裏的例子官方文檔:http://api.jquery.com/get/http://api.jquery.com/jQuery.post/

服務器的處理程序應該是這樣的,如下:

use JsonResponse; // you must specify the exact component (I use this) 

/** 
* Change message in dialog // for example 
*/ 
public function changeDialogMessageAction(Request $request) { 
    // request data processing 

    $response = new JsonResponse(); 
    $response->setData(array(
     // new data for returning to client 
    )); 

    return $response; // your data, which will be handled in callback 
} 

在控制器中你不應該創建HTML結構。這是不好的風格! JavaScript具有異步事件模型,您應該使用它。控制器必須處理/轉換由您傳遞並返回的數據。 jQuery回調必須將接收到的已處理/已轉換的數據嵌入到DOM中。

+0

哪裏的數據參數?爲什麼發佈?爲什麼不提「'.getJson」? – charlietfl

+0

1)什麼說法?我如何知道其任務的背景? 2)認真閱讀://例如3)在他的問題中沒有關於JSON的一個詞!!! –

相關問題