ZF2选择使用AJAX填充

时间:2014-04-23 23:49:13

标签: ajax zend-framework2 zend-form-element

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

任何帮助?

由于

2 个答案:

答案 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())之前)添加 验证和表单填充之前的选项