我有一个奇怪的问题,我似乎无法弄明白。我读了一些相关问题,例如this和this。但是,这些都使用正常提交,而我通过ajax请求执行保存。 (这让我想到了我的问题)。
首先,我不确定多少级别的优雅'现在使用js / ajax(很容易不使用表单)需要实现降级。但是为了js-disabled浏览器/用户,我认为它的'明智地使用表格。你的摄入量是多少?
然而,主要问题是下面的问题。 我正在尝试使用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(但这不起作用)
$this->BloodTarget->id = $this->request->data['BloodTarget']['id'];
对于我的生活,有谁能请确定我的代码中有什么问题?我错过了什么? 谢谢你!
答案 0 :(得分:0)
血腥的东西伴侣;)
也许我很愚蠢,但我认为这条规则:
data[BloodTarget][blood_group_id]:1 // see blood_group_id
与
不同$this->BloodTarget->id = $this->request->data['BloodTarget']['id']; // see id
所以也许你应该重命名
data[BloodTarget][blood_group_id]:1
为:
data[BloodTarget][id]:1
祝你好运!