使用jQuery在MVC上传输数据的最佳方式


Best way to transport data on MVC using jQuery?

我有一个收件箱,里面有来自客户的内部消息。当我点击列表上的名称我请求使用jQuery $.ajax所以:

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

我的控制器应该返回一个json数据变量?我知道它应该将它转储到视图中,我应该在那里处理它但如果是客户端,该怎么做呢?

我不知道是否更好的处理和创建html结构到控制器,而不是只是加载它在。messages-dialog与jQuery.html();

对不起,我对这个问题有点困惑。

您可以使用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中嵌入接收到的处理/转换数据