Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp$this->;布局=';ajax';_Cakephp_Jquery - Fatal编程技术网

Cakephp$this->;布局=';ajax';

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"

当我在控制器中声明$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="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可以在/cake/libs/view/Layout/ajax.ctp中找到(如前所述),因为它没有常见的html内容,所以只需从控制器输出数据即可
  • 您可以将这个(或default.ctp)文件复制到/app/views/layouts/ajax.ctp,这样就可以使用它而不是位于核心文件中的文件

  • 我有一个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; ?>