是否有一种方法可以在某些封闭空间内加载控制器(产品/类别),以使该控制器内的自定义函数的ajax不会中断?
我基本上是从ajax加载一个自定义函数,该函数位于核心控制器产品/类别中。在此函数中,我需要重新加载产品/类别控制器,以基于发送给该函数的ajax数据获取新的产品列表,然后将其作为对原始ajax的响应返回。
当我尝试做
$this->load->controller('product/category')
它使我使用该功能设置的ajax显得很刺耳,在控制台中看到404。
我尝试使用
$foo = $this->load->controller('product/category')
它可以工作,但我还需要执行
$this->load->view('product/category')
而且我不知道如何做到不破坏ajax。
答案 0 :(得分:0)
基本上,我做了我想做的事情(请参阅问题的中部,即有关最终需要使用ajax刷新我的产品列表的部分)(通过阅读How to get products in JSON format from OpenCart using phonegap/jQueryMobile之后)从ajax我直接调用产品/类别,而不是问题中的产品/类别控制器内部的自定义函数,当我返回包含视图的html输出的响应时,我重新加载了在产品/类别中创建的div。用jQuery的html树枝。阿贾克斯是
$(document).ready(function(){
$.ajax({
url: 'index.php?route=product/category&path=18&json',
type: 'get',
beforeSend: function() {
},
complete: function() {
},
success: function(data) {
console.log('success');
if (data.length > 0) {
console.log(data);
$('#mydiv').html(data);
}
}
});
});
而我添加到product / category.php中的代码是
if(isset($this->request->get['json'])) {
$this->response->setOutput($this->load->view('product/view_for_mydiv', $data));
} else {
$this->response->setOutput($this->load->view('product/category', $data));
}
您可能会注意到,我在product / category.twig中添加了一个名为mydiv的div,将其恰好放在了要放置html的位置,然后在default / product / category /文件夹中创建了一个名为view_for_mydiv.twig的树枝,当看到对它进行了ajax调用时,产品/类别控制器将发回的html而不是其普通树枝。位于category.twig内的#mydiv div包装的html与使用view_for_mydiv.twig呈现产品/类别时生成的html相同。