У меня есть обработчик событий, настроенный так:
<event-handler name="action.product.delete">
<broadcasts>
<message="DeleteProduct"/>
</broadcasts>
<results>
<result do="page.product.list" redirect="true"/>
</results>
</event-handler>
Другими словами, удалите продукт, а затем перенаправьте пользователя обратно в список продуктов. Это событие будет вызвано из другого события page.product.delete
, которое показывает страницу подтверждения удаления.
Теперь я пытаюсь использовать службу удаленного взаимодействия, которая была представлена в Model Glue 3. Я пытаюсь отправить запрос AJAX POST:
$.ajax({
url: 'RemotingService.cfc?method=executeevent&requestformat=json',
data: {
id: productId,
eventName: 'action.iat.delete',
returnValues: 'message'
},
type: 'POST'
});
Хотя это нормально работает с точки зрения удаления продукта, в итоге браузер отправит один запрос POST , получит перенаправление 302, а затем выполнит GET запрос сразу после этого. GET - это страница HTML, а не данные JSON.
Если я удалю redirect="true"
из обработчика событий, AJAX будет работать правильно, но сгенерированный URL из не-AJAX-версии моей страницы не будет. В конечном итоге пользователь выполнит удаление и подтвердит его, а на странице action.product.delete
отобразится страница page.product.list
, но не будет изменен URL-адрес. Если пользователь добавит в закладки эту страницу, он будет добавлять в закладки action.product.delete
!
Как настроить мое приложение так, чтобы оба они работали правильно, или мне придется вернуться к использованию удаленных вызовов процедур на CFC для обработки моего AJAX?