我有一个收件箱,里面有来自客户的内部消息。当我点击列表上的名称我请求使用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中嵌入接收到的处理/转换数据