嗨我有三个下拉列表,第一个填充在我的控制器中,第二个需要填充在ajax中,第一个是params,第三个需要第二个。 当我的表单有效所有字段它在两个下拉列表中打印以下错误 在干草堆中找不到输入
这是我的ajax电话
$("#department_id").change(function(){
$.ajax({
type: "POST",
url: "<?php echo $this->url('zfcadmin/getprovinces'); ?>",
data: "dept="+$(this).val(),
success: function(msg){
$("#province_id").html(msg);
}
});
});
这是我的控制器我做错了什么帮助?
public function getProvincesByIDAction()
{
$request = $this->getRequest();
$response = $this->getResponse();
if ($request->isPost()) {
$response->setStatusCode(200);
$codDpto=$request->getPost('dept');
$data=$this->getTable()->getProvinces($codDpto);
$buffer="<option value=''>Seleccione una Provincia</option>";
foreach ($data as $prov) {
$buffer.=<<<EOT
<option value='{$prov->codProv}'>{$prov->name}</option>
EOT;
}
$response->setContent($buffer);
$headers = $response->getHeaders();
}
return $response;
}
任何帮助?
由于
答案 0 :(得分:1)
您可以设置&#34; disable_inarray_validator &#34;的值到&#34; true &#34;在表单元素
的选项中 'options' => array(
'label' => 'Some Label',
'value_options' => array(),
'disable_inarray_validator' => true,
),
答案 1 :(得分:0)
当您提交表单时,它将重新创建服务器端。这意味着每个select元素的value_options
数组将不包含已发布的值(因为选项是通过AJAX加载的)
所以错误&#34;输入在大海捞针中找不到&#34;可以被认为是&#34;您选择的选项不是select元素中的选项&#34;
为了验证发布的值,您需要确保在发布表单时在服务器端(即$form->setData($request->getPost())
之前)添加 验证和表单填充之前的选项