【发布时间】:2014-11-17 02:07:58
【问题描述】:
我有一个方法可以根据请求类型呈现标准视图文件 index.ctp 或 AJAX 视图文件 index_ajax.ctp
在我的控制器中 - 我有以下代码
public function index() {
if ($this->request->is(array('get', 'post))) {
// .... do normal stuff
} elseif ($this->request->is('ajax')) {
$this->autorender = false;
echo 'blah blah'; // this shows
$this->render('index_ajax', 'ajax'); // this does not render
exit;
}
}
调用此 AJAX 视图的 Javascript 如下
$('#myModal').on('show.bs.modal', function (event) {
$.ajax({
url: '/cake/myController/index',
type: 'ajax',
success: function(data) {
alert(data);
$('#link-list').html(data);
}
});
});
现在正常的索引视图渲染得很好——完全没有问题,但是 AJAX 视图没有渲染。如果我在控制器中放置一个 echo 语句,该语句确实会输出到视图中,但实际的视图文件本身并没有被拾取和渲染。我不确定我的错误是什么 - 感谢任何帮助。
【问题讨论】:
-
请参阅ajax-and-cakephp,了解如何利用扩展和一些自定义 JS 在 CakePHP 中轻松检索 AJAX 输出。 PS:您应该始终提及您正在使用的确切 cakephp 版本。
-
我使用的是 CakePHP 2.5.x
-
马克 - 我查看了您的网站,但请您帮我理解为什么视图在 ajax 布局中默认不呈现?回显的东西是如何传递的,但当我们明确提到渲染时却没有传递?
-
我使用了 AJAX 视图,它工作正常 - 但是当我将它与 AJAX 分页结合使用时,我遇到了一个独特的问题。第一页呈现得非常好,但是第二页是一个转义的 JSON 数组。我认为,问题在于分页链接没有通过 Javascript 函数重定向 - 你对如何解决这个问题有什么建议吗?