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

时间:2016-10-16 11:46:50

标签: javascript php jquery

我的收件箱中包含来自客户的内部消息。当我点击名单时,我正在请求使用jQuery $.ajax所以:

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

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

    });

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

我不知道是否更好地将html结构处理并创建到控制器中,而不是仅使用jQuery.html()将其加载到.messages-dialog;

对不起,我在这个问题上有点迷失。

1 个答案:

答案 0 :(得分: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中嵌入已接收的处理/转换数据。