尝试使用CakePHP 2.0中的JsHelper,我得到了一个Request方法,用AJAX调用的结果更新表单字段的值 - 到目前为止,这非常好。但是,在检查表单字段时,它说:
<input type="hidden" id="JobsPartUnitcost" name="data[JobsPart][unitcost]">5.55</input>
但是当我复制它并首先粘贴它上面说
<input type="hidden" id="JobsPartUnitcost" name="data[JobsPart][unitcost]"></input>
当我提交表单时,值为空。为什么浏览器显示值但底层DOM没有注册它?
使用Mac / Safari,CakePHP 2.0,JQuery
修改 的 这里要求的是表单数据转储
Array ( [JobsPart] => Array ( [job_id] => 1 [company_id] => 4 [part_id] => 2 [qty] => 3 [unitcost] => ) )
这是AJAX代码
$this->Js->get('#JobsPartPartId')->event('change',
$this->Js->request(
array(
'controller'=>'JobsParts',
'action'=>'getPart'
),
array(
'update'=>'#JobsPartUnitcost',
'async' => true,
'method' => 'post',
'dataExpression'=>true,
'data'=> $this->Js->serializeForm(array(
'isForm' => false,
'inline' => true
))
)
)
);
答案 0 :(得分:3)
您需要设置值属性:
<input type="hidden" value="YOUR VALUE HERE" name="data[Etc][field]" />
您不会在输入标记中包装值。
答案 1 :(得分:0)
行。我找到了一个解决方法,似乎没有其他人找到直接的解决方案。
在我的静态视图中,我现在只有<td id="part"></td>
输入字段所在的位置。我的Ajax调用现在更新'#part
',我的动态视图(控制器ajax动作调用的视图)现在输出整个字段 - <?php echo $this->Form->input('unitcost', array('type' => 'text', 'value' => $part['Part']['costamount'])); ?>
。丑陋但它有效。
答案 2 :(得分:0)
$this->Js->get('#JobsPartPartId')->event('change',
$this->Js->request(
array(
'controller'=>'JobsParts',
'action'=>'getPart'
),
array(
'success'=>'$("#JobsPartUnitcost").val(data)',
'async' => true,
'method' => 'post',
'dataExpression'=>true,
'data'=> $this->Js->serializeForm(array(
'isForm' => false,
'inline' => true
))
)
)
);