我看到了类似的主题,但没有帮助:(
PS:1.6.1.1
概述: 是否有任何“魔术”代码覆盖AdminOrdersController必须包含以获取ajax请求(jQuery)?
详细说明: 我在Orders List页面上调用了Ajax请求。当这个请求被 oryginal AdminOrdersController中的函数“收集”时,它运行正常!
但是当我将从Ajax 获取调用的函数移动到/ override / controllers / admin /中的分隔文件时,它就会失败。 - >没有回应请求。
为什么???
我想我应该添加一些“给”Ajax的URL,但我不知道是什么......
先谢谢!
这是带有Ajax请求的JS。它甚至没有URL参数,因为它调用了currant页面。
$(function() { $('.notice_show').on('click', function() {
var $scope = $(this);
var $tr = $scope.closest('tr');
var $length = $tr.find('td').length;
var $ajax_run = null;
var $element = null;
var $notice_show_content = null;
if (!$scope.data('show')) {
$scope.data('show', true);
$tr.after('<tr class="not_show"><td colspan="'+$length+'"><span class="not_show_ajax_running"><i class="icon-refresh icon-spin icon-fw"></i></span><span class="notice_show_content"></span></td></tr>');
$element = $tr.next('.not_show');
$notice_show_content = $element.find('.notice_show_content');
$ajax_run = $element.find('.not_show_ajax_running');
$ajax_run.show();
$.ajax({
data: {
get_notice: true,
id_order: $scope.attr('attr-id')
},
dataType: 'json',
type: 'POST',
success: function($response) {
if ($response.error) {
$.notify($response.error, 'error', 2000);
} else {
$notice_show_content.html($response.content);
}
},
complete: function() {
$ajax_run.hide();
}
});
} else {
$scope.data('show', false);
$tr.next('.not_show').remove();
}
}); });
这是添加到AdminOrdersController的功能。它仅在它被添加到oryginal文件时才起作用。如果它在覆盖文件夹中则失败。
public function renderList()
{
return parent::renderList();
if (Tools::isSubmit('get_notice') && ($id_order = Tools::getValue('id_order', NULL))) {
$result = array(
'error' => false,
'content' => ''
);
$order = new Order($id_order);
if (Validate::isLoadedObject($order)) {
$notices = NoticeOrder::get($order->id);
if ($notices) {
foreach($notices as &$notice) {
$emp = new Employee($notice->id_employee);
if (Validate::isLoadedObject($emp)) {
$notice->employee = $emp->firstname . ' ' . $emp->lastname;
} else {
$notice->employee = '';
}
}
$this->context->smarty->assign(array(
'notice' => $notices,
'not_add' => true
));
$result['content'] = $this->createTemplate('_notice.tpl')->fetch();
$address = new Address($order->id_address_delivery);
if (Validate::isLoadedObject($address)) {
if ($address->other) {
$this->context->smarty->assign(array(
'addresses' => array(
'delivery' => $address
),
));
$result['content'] .= $this->createTemplate('_other.tpl')->fetch();
}
}
} else {
$result['error'] = $this->l('Notice not found');
}
} else {
$result['error'] = $this->l('Order not found');
}
echo Tools::jsonEncode($result);
die;
}
}
答案 0 :(得分:2)
您的问题在这里,与AJAX无关
public function renderList()
{
return parent::renderList(); // !!! code below this line will not work
...
答案 1 :(得分:0)
您是否尝试过检查网络监视器(ctrl + shift + q)?你能发布你的ajax帖子的状态结果吗?但很明显。只需更改ajax post URL以覆盖不是原始控制器的路径。
例如:
url:base_url +'/ modules / ols / ajax.php',但添加文件的完整路径(覆盖/ controllers / admin / AdminOrdersController.php)。
此后再次检查POSt状态。