【问题标题】:ZF2 select populate with AJAXZF2 选择用 AJAX 填充
【发布时间】:2014-04-23 23:49:12
【问题描述】:

嗨,我有三个下拉列表,第一个填充在我的控制器中,第二个需要在 ajax 中填充第一个的参数,第三个需要第二个。 当我的表单对所有字段都有效时,它会在两个下拉列表中打印以下错误 在大海捞针中找不到输入

这是我的 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;
}

有什么帮助吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      所以错误“The input was not found in the haystack”可以认为是“您选择的选项不是select元素中的选项”

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

      【讨论】:

        猜你喜欢
        • 2015-12-21
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 2014-12-10
        • 2014-05-24
        相关资源
        最近更新 更多