Я модифицирую существующую систему, которая использует Smarty.Эта конкретная проблема вызывает основной камень преткновения, поскольку я просто не могу найти способ его обойти.
У меня есть сетка данных, у каждой записи есть действие, которое вызывает? Module = the_module & action = the_action.
Моя соответствующая функция the_module_the_action ($ postData, $ getData) используется для выполнения конкретного запроса.
Запрос на этот модуль поступает из запроса jQuery $ .ajax ({}), простопотому что я не хочу терять переменные формы поиска.Так что в случае успеха я перенаправлю страницу, используя document.location = 'index.php? Module = & action ='.
Это хорошо, так как позволяет мне определить, что действие было успешным, сохраняя при этомфильтры поиска по сетке.
Но у меня проблема, когда пользовательское действие не выполняется.Метод the_module_the_action ($ postData, $ getData) возвращает эхо 'success';exit () в случае успеха, но в случае ошибки он должен распечатать шаблон Smarty, то есть детали записи.
Я считаю, что проблема возникает из-за вызова через Ajax.Шаблон обслуживается, но, поскольку это вызов, выполненный с помощью Ajax, он не отображается.
Как обойти эту проблему?
Обновление: -
Этомоя функция, которую Ajax вызывает:
public function module_action($post_data) {
$object=new Class((int)$post_data["id"]);
if($object->method()) {
echo "success";
exit();
}
else {
$this->assignToSmarty('_someSmartyVar', $someData);
$this->assignToSmarty('_data', $class->getData());
echo "failed";
}
}
Ajax, используемый для вызова этого: -
$(document).ready(function() {
$(".revokeButton").click(function(){
var selected=$(this).attr('id');
var filterBu = $('#filter_bu').val();
var filterJc = $('#filter_jc').val();
if(confirm("Are you sure you want to r.....")) {
$.ajax({
beforeSend: function() { },
url: 'index.php?module=module&action=action',
type: 'POST',
data: ({ bid:selected }),
cache: false,
success: function(data, textStatus) {
if(data == 'success') {
success_message = 'success';
} else if(data == 'failed') {
success_message = 'failed';
}
document.location='index.php?module=module&message='+success_message+'&filter_bu='+filterBu+'&filter_jc='+filterJc;
}
});
}
});
});
Успех и неудача успешно отражаются, но умные вещи не.