zendframework2-ZF2选择用AJAX填充



Hi我有三个下拉列表,第一个是在我的控制器中填写的,第二个需要在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;
}

有什么帮助吗?

感谢

您可以在表单元素的选项中将"disable_inarray_validator"的值设置为"true

'options' => array( 'label' => 'Some Label', 'value_options' => array(), 'disable_inarray_validator' => true, ),

当您提交表单时,它将在服务器端重新创建。这意味着每个select元素的value_options数组将不包含已发布的值(因为选项是通过AJAX加载的)

因此,错误"在干草堆中找不到输入"可以被认为是"您选择的选项不是选择元素中的选项"

为了验证已发布的值,您需要确保在发布表单时在服务器端的验证和表单填充之前(即$form->setData($request->getPost())之前)添加这些选项。

最新更新