我的收件箱中包含来自客户的内部消息。当我点击名单时,我正在请求使用jQuery $.ajax
所以:
$.ajax({
url: 'messages/retrieve/' + client_id,
}).done( function(data) {
$('.messages-dialog').html(data);
});
我的控制器应该返回带有json数据的变量?我知道它应该将它转储到一个视图上,我应该在那里处理,但如果是客户端怎么办呢?
我不知道是否更好地将html结构处理并创建到控制器中,而不是仅使用jQuery.html()将其加载到.messages-dialog;
对不起,我在这个问题上有点迷失。
答案 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中嵌入已接收的处理/转换数据。