【问题标题】:Unable to populate zend form through ajax request无法通过 ajax 请求填充 zend 表单
【发布时间】:2013-01-31 08:25:23
【问题描述】:

我正在尝试通过单击链接执行 jquery post 请求来填充 zend 表单。我将 id 传递给 js 函数,以便我的操作知道要填充哪些数据,但不会填充这些值。当我通过 URL 传递 id 参数时,这些值正在被填充

JS 调用

<a href="javascript: edit(id)">

JS函数

function edit(id)
{
    $.post("url",{'edit':id});

}

zend 内部操作

 if ($this->_request->getParam('edit')) {
                 $id=$this->_request->getParam('edit');
                 $table=$Table->findByID($id);
                 $table->populateForm();

             }

编辑

通过将我的 ajax 调用的数据类型设置为 html 并将填充的 zend 表单传递给控制器​​中的 ajax 调用,我能够填充表单并将其呈现在页面上 控制器: echo $form; exit; 阿贾克斯调用 success: function(data){ $(#div).html(data)}

确保你的ajax调用的数据类型是html

【问题讨论】:

    标签: jquery zend-framework


    【解决方案1】:

    试试这个:

    function edit(id)
    {
        $.get("url",{'edit':id});
    }
    

    【讨论】:

    • 我不想使用 get..我希望这个数据只通过 post 请求
    【解决方案2】:

    在你的行动中,我认为你需要更多的代码

    $id    = $this->_request->getParam('edit', NULL);
    
    if(FALSE === is_null($id)) {
    
         $form      = new Form(); //unless this is created somewhere else
         $data      = $Table->findByID($id); //$table and $Table is bit confusing
    
         $form->populate($data); 
         /*
         or if $table->populateForm(); does this for you make sure you 
         pass the result data 
         $table->populateForm($data);
         */  
     }
    

    【讨论】:

    • 表单已经在其他地方创建,这也不起作用。我正在使用类似的删除实现,它可以工作。我认为这与ajax请求有关。我想我不能为 ajax 调用输出 ajax 之外的任何数据。如果我错了,请纠正我
    【解决方案3】:

    如果它通过 get 工作但没有发布,它可能会在 $id 的输入中出现前导零或其他东西。

    特别是如果您的 $Table->findByID 进行一些转换。

    试试:

     if ($this->_request->getParam('edit')) {
                     $id= (int) $this->_request->getParam('edit');
                     $table=$Table->findByID($id);
                     $table->populateForm();
    
                 }
    

    如果这不起作用,请尝试从帖子中调试您的 $this->_request->getParam('edit') 并获取并查看它们之间的区别。

    但是,如果您的示例与 get 一起使用,则它必须与 post 一起使用。

    【讨论】:

    • 请告诉我是否可以在 ajax 请求期间使用 form-&gt;setValue() 方法设置表单值
    【解决方案4】:

    通过将我的 ajax 调用的数据类型设置为 html 并将填充的 zend 表单传递给控制器​​中的 ajax 调用,我能够填充表单并将其呈现在页面上

    控制器: echo $form; exit;

    Ajax 调用 success: function(data){ $(#div).html(data)}

    确保你的ajax调用的数据类型是html

    【讨论】:

      猜你喜欢
      • 2015-08-16
      • 2011-12-11
      • 2014-08-28
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 2013-09-04
      相关资源
      最近更新 更多