0

我正在尝试通过单击链接执行 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表单传递给控制器​​Controller中的ajax调用,我能够填充表单并将其呈现在页面上: echo $form; exit; Ajax调用 success: function(data){ $(#div).html(data)}

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

4

4 回答 4

0

试试这个:

function edit(id)
{
    $.get("url",{'edit':id});
}
于 2013-01-31T08:28:02.023 回答
0

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

$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);
     */  
 }
于 2013-01-31T08:39:51.490 回答
0

如果它通过 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 一起使用。

于 2013-01-31T17:13:19.120 回答
0

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

控制器: echo $form; exit;

阿贾克斯调用 success: function(data){ $(#div).html(data)}

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

于 2013-02-05T11:40:38.117 回答