【发布时间】:2014-03-17 13:03:53
【问题描述】:
我有一个很奇怪的问题,我似乎无法弄清楚。我阅读了一些相关的问题,例如this 和this。但是,这些都使用正常提交,而我通过 ajax 请求执行保存。 (这让我想到了我的问题)。
首先,我不确定现在需要用 js/ajax 实现多少级别的“优雅”降级(很容易不使用表单)。但是为了禁用 js 的浏览器/用户,我认为使用表格是明智的。你对此有何看法?
然而,主要问题是以下问题。 我正在尝试使用 ajax 编辑记录,如下所示:
这是我的表格:
<?php echo $this->Form->create('BloodTarget',array('type' => 'post', 'default'=> false));?>
<?php $i = 0;?>
<?php foreach($targets as $target):?>
<?php echo $this->Form->input("BloodTarget.$i.cur_amount", array('type' => 'hidden', 'value' => $target['BloodTarget']['target_amount']));?>
<?php echo $this->Form->input("BloodTarget.$i.id", array('type' => 'hidden', 'value' => $target['BloodTarget']['id']));?>
<?php echo $this->Form->input("BloodTarget.$i.target_amount",array('label' => false,'type' => 'number','value' => $target['BloodTarget']['target_amount']));?>
<?php $i++;?>
<?php endforeach;?>
<?php echo $this->Form->end();?>
这会产生类似的东西
<input type="hidden" name="data[BloodTarget][0][cur_amount]" value="26" id="BloodTarget0CurAmount">
<input type="hidden" name="data[BloodTarget][0][id]" value="1" id="BloodTarget0Id">
<div class="input number"><input name="data[BloodTarget][0][target_amount]" value="26"
type="number" id="BloodTarget0TargetAmount"></div>
在我的 jquery 的 ajax 函数中,我序列化了表单
data: $("#BloodTargetRequestBloodForm").serializeArray()
像这样发送数据:
_method:POST
data[BloodTarget][blood_group_id]:1
data[BloodTarget][blood_component]:Whole Blood
data[BloodTarget][target_amount]:0
最后我保存了控制器中的数据
if($this->BloodTarget->save($this->request->data['BloodTarget']))
它确实保存了,但是,它创建了一个 ID 为零的新记录,而不是更新表单中的 3 条记录。
这里有什么问题?我也尝试在更新前设置ID,(但这不起作用)
$this->BloodTarget->id = $this->request->data['BloodTarget']['id'];
对于我的一生,谁能找出我的代码有什么问题?我错过了什么? 非常感谢!
【问题讨论】: