Javascript 黑洞请求Cakephp
在我的索引页上,我的表的每一行都有复选框 要编辑所选项目,我使用javascript/jquery获取复选框类,构建一个ID数组,然后将其发布到控制器中的edit selected方法 现在,这一切都很好地工作,但当我的应用程序控制器中启用安全时,我的帖子会被黑洞,数组不会被发布 以下是我的index.ctp文件: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
<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'));?>
</span>
<span style="float: left">
<?php echo $this->Html->link(__('Edit Selected Items'), array('action' => 'lceditSelected'), array('class' => 'general_dialog'));?>
</span>
<span style="float: right">
<?php echo $this->Html->link(__('Delete Selected Items'), array('action' => 'deleteSelected'), array('class' => 'general_dialog'));?>
</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));