Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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
Javascript 黑洞请求Cakephp_Javascript_Jquery_Security_Cakephp - Fatal编程技术网

Javascript 黑洞请求Cakephp

Javascript 黑洞请求Cakephp,javascript,jquery,security,cakephp,Javascript,Jquery,Security,Cakephp,在我的索引页上,我的表的每一行都有复选框 要编辑所选项目,我使用javascript/jquery获取复选框类,构建一个ID数组,然后将其发布到控制器中的edit selected方法 现在,这一切都很好地工作,但当我的应用程序控制器中启用安全时,我的帖子会被黑洞,数组不会被发布 以下是我的index.ctp文件: <table id="indexTable"> <thead><tr> <th> <?php echo

在我的索引页上,我的表的每一行都有复选框

要编辑所选项目,我使用javascript/jquery获取复选框类,构建一个ID数组,然后将其发布到控制器中的edit selected方法

现在,这一切都很好地工作,但当我的应用程序控制器中启用安全时,我的帖子会被黑洞,数组不会被发布

以下是我的index.ctp文件:

<table id="indexTable">
    <thead><tr>
        <th> <?php echo $this->Form->checkbox('select_all', array('value' => 'select_all')); ?> </th>
        <th> <?php echo $this->Paginator->sort('id', 'ID'); ?> </th>
        <th> <?php echo $this->Paginator->sort('name', 'Name'); ?> </th>
        <th>Auto Offset  </th>  <th>UTC Offset Sec  </th>  <th>In Month  </th>
        <th>In Week      </th>  <th>In Dow          </th>  <th>In Hour   </th>  <th>Out Month   </th>
        <th>Out Week     </th>  <th>Out Dow         </th>  <th>Out Hour  </th>  <th>Offset Sec  </th>
        <th>DST Ref      </th>  <th>Actions      </th>
    </tr></thead>

    <tbody>

<?php
$this->Form->create('LocalClock');
foreach($localClocks as $LocalClock) { ?>
        <tr>
            <td>  <?php echo $this->Form->checkbox('LocalClocks'.$LocalClock['LocalClock']['id'], array('value' => $LocalClock['LocalClock']['id'], 'hiddenField' => false));?>  </td>
            <td>  <?php echo $LocalClock['LocalClock']['id']; ?>              </td>
            <td>  <?php echo $LocalClock['LocalClock']['name']; ?>            </td>
            <td>  <?php echo $LocalClock['LocalClock']['auto_offset']; ?>     </td>
        </tr>
<?php } ?>
    </tbody>
</table>

</div>

<!-- This <div> contains all the actions that can be performed on the Local Clocks. -->
<div>
    <p>

        <span style="float: left">
            <?php echo $this->Html->link(__('Edit All Items'), array('action' => 'editAll'), array('class' => 'link'));?> &nbsp;&nbsp;
        </span>

        <span style="float: left">
            <?php echo $this->Html->link(__('Edit Selected Items'), array('action' => 'lceditSelected'), array('class' => 'general_dialog'));?> &nbsp;&nbsp;
        </span>

        <span style="float: right">
            <?php echo $this->Html->link(__('Delete Selected Items'), array('action' => 'deleteSelected'), array('class' => 'general_dialog'));?> &nbsp;&nbsp;
        </span>
    <?php $this->Form->end(); ?>

    </p>
</div>
如果您能提供帮助,让它在不出现黑洞的情况下正常工作,我们将不胜感激

提前谢谢

------------------------------------------编辑---------------------------------------------- 我将
$this->Form->create('LocalClock')
$this->Form->end()
添加到表中,并将$.post()切换为和$.ajax()调用


如果我发送序列化表单,我不会得到黑洞,但是当我查看发布的数据时,它不包括任何复选框ID。

您的示例缺少表单标记

您需要使用form helper创建并结束表单,以确保表单生成中包含安全令牌:

$this->Form->create();
  // Other form elements here.
$this->Form->end();

您是否尝试修改crsf保护策略? 如果您使用相同的令牌重新加载页面,安全组件将隐藏请求

var $components = array('Security'=>array('csrfUseOnce'=>false));

我试着把
表单->创建()
放在foreach循环行的正上方,把
表单->结束()
放在包含编辑/删除所选按钮的div后面,但我还是被黑了。有什么想法吗?我想我可能知道问题出在哪里了,我包括了
表单->创建
表单->结束
代码,但是我发布数据的按钮没有抓住安全信息。我发现我的问题是我的大表单中有多个表单。我把这些都拿走了,一切正常。ThanksI确实考虑过使用它,但我最终改变了提交表单的方式。谢谢
var $components = array('Security'=>array('csrfUseOnce'=>false));