Cakephp$this->;布局=';ajax';
当我在控制器中声明$this->layout='ajax'时,我的css似乎不起作用 在我的view1.ctp中,我使用jquery创建了一个对话框。内容将通过jquery.ajax()从view2.ctp获取。我创建了html类、id和所有类似于view1.ctp的类 我收到的内容还可以。问题是我在view2.ctp中声明的id和类不起作用。简而言之,我得到一个空的对话框设计 有没有办法解决这个问题?先谢谢你。干杯 在my view1.ctp中:Cakephp$this->;布局=';ajax';,cakephp,jquery,Cakephp,Jquery,当我在控制器中声明$this->layout='ajax'时,我的css似乎不起作用 在我的view1.ctp中,我使用jquery创建了一个对话框。内容将通过jquery.ajax()从view2.ctp获取。我创建了html类、id和所有类似于view1.ctp的类 我收到的内容还可以。问题是我在view2.ctp中声明的id和类不起作用。简而言之,我得到一个空的对话框设计 有没有办法解决这个问题?先谢谢你。干杯 在my view1.ctp中: <div id="thisDialog"
<div id="thisDialog">
<div id="content">
</div>
</div>
<script>
jQuery('.test_box').live('click',function(){
jQuery('#content').empty();
jQuery.ajax({
async:false,
url: '/controller1/view2/'+id //url pointing to my 1controller.php
success:function(data){
jQuery('#content').append(data);
}
});
jQuery('#thisDialog').dialog('open');
});
</script>
这里是view2.ctp
<div class='box'>
<div class='title'>
<h5>Title here</h5>
</div>
<div class='contents'>
<table>
<tr>
<td class='head'></td>
<td class='head'></td>
</tr>
<tr>
<td class='alt'>Field content1 here</td>
<td>Fields content2 here</td>
</tr>
</table>
</div>
</div>
标题在这里
此处为字段内容1
字段内容2在这里
AJAX布局是一个简单的空白文件,其中只包含您输出的HTML(或其他内容)片段。它不包含任何样式表,因为样式信息应该来自要插入内容的页面。在调用页面中定义ID和类的样式将解决您的问题。可以在cake/libs/view/layouts/ajax.ctp中找到“ajax”布局,其内容如下:
<?php echo $content_for_layout; ?>
这实际上只输出视图,没有任何周围的HTML(因此没有CSS或JS) 为什么“ajax”布局需要CSS?无论如何:
我有一个layout.ctp,其中view1.ctp被称为usign$contents_for_layout。我已将所有样式表包含在layout.ctp标记中。我在layout.ctp中声明的样式表应用于view1.ctp。如果我错了,请纠正我的错误,您是否试图解释我必须在view1.ctp中重新声明样式表才能在我的view2.c中使用tp?^^视情况而定。如果将AJAX调用的内容插入layout.ctp的DOM中,则不必重新声明任何内容。否则,如果您使用的是具有自己CSS的litebox或对话框,则必须重新声明。如果使用Firebug查看DOM,很容易发现发生了什么。对话框位于布局的内部DOM和我试图在view1.ctp中重新声明我的样式表。仍然不起作用。谢谢回复。因此,如果我使用$this->layout='ajax',就没有办法使用css或js自定义视图了。只有在向ajax调用发送原始数据(JSON对象或HTML片段)时,才应该使用此视图。如果您的页面是通过iframe中的ajax加载的(一些模式插件会这样做),那么它应该使用默认布局,因为包含的页面样式不适用于iframe内容。您还可以添加default.ctp和ajax.ctp吗?
<?php echo $content_for_layout; ?>