Это довольно просто.
Во-первых, вам нужно создать контроллер со специальной задачей, которая будет обрабатывать ваше обновление рейтинга. Чтобы сделать это безопасно, проверьте токен! Токен будет поставляться с AJAX-запросом.
Рассмотрим этот пример
function rate() {
// Check for request forgeries
JRequest::checkToken() or jexit('Invalid Token');
// Get ID of item
// update rating, etc...
}
Во-вторых, создайте свой AJAX-запрос в представлении, явно вызванном каким-либо действием.
Не забудьте отправить ваш запрос как POST, потому что вы собираетесь записывать данные ...
Вы можете либо иметь свой скрипт во внешнем документе, получить значения из HTML-документа (id, токен, URL и т. Д., Которые находятся в скрытых входах), либо вы можете сгенерировать javascript с помощью PHP и включить его в заголовок (как в примере ниже). *
<?php
//
$url = JRoute::_('index.php?option=my_component&controller=my_controller');
$token = JUtility::getToken(); // <- Session token
$id = 101; // <- YOUR ID
// This will add the request to the head of the document, instead of somewhere in the document
JFactory::getDocument()->addScriptDeclaration("
.ajax({
type: 'POST',
url: $url,
data: {
'$token': '1', // <-- THIS IS IMPORTANT
'task': 'rate',
'id': $id
},
success: youSuccessFunction
});
");
?>
Возможно, вам придется изменить несколько вещей, но это идея AJAX в MVC.
ПРИМЕЧАНИЕ: Вы также можете позвонить JRequest::checkToken('get')
, и это проверит токен в URL. Это полезно для вызовов AJAX, которые читают данные.