0

我是 Zend 框架的新手。我正在尝试使用 JSON 显示来自数据库的数据。我对数据进行编码并将其传递给 JQuery。但无法从数据库中检索值。数据显示为“未定义”。我的控制器功能如下:

 public function displayAction() 
 {
    $data1 = array();
    $request = $this->getRequest();
    $response = $this->getResponse();
    if ($request->isPost()) {
       $response->setContent(\Zend\Json\Json::encode(array('data' => $this-> getStickyNotesTable() -> fetchAll())));
}
    return $response; 
}

我的 FetchAll() 是:

 public function fetchAll() {
    $resultSet = $this->select(function (Select $select) {
                $select->order('created ASC');
            });
    $entities = array();
    foreach ($resultSet as $row) {
        $entity = new Entity\StickyNote();
        $entity->setId($row->id)
                ->setNote($row->note)
                ->setCreated($row->created);
        $entities[] = $entity;
    }
    return $entities;

}

jQuery函数:

function getUserList(element) {

$('#indicator').show();

$.post('stickynotes/display',
    function(data, textStatus) {
        renderUserList(data);
        $('#indicator').hide();
    }, 
    "json"      
);

}

function renderUserList(jsonData) {
var table = '<table width="600" cellpadding="5" class="table table-hover table-bordered"><thead><tr><th scope="col">Note</th></tr></thead><tbody>';

$.each(jsonData, function(index, data){    
    table += '<tr>';
    table += '<td class="edit" field="note" user_id="'+data.id+'">'+data.note+'</td>';
    table += '<td><a href="javascript:void(0);" user_id="'+data.id+'" class="delete_confirm btn btn-danger"><i class="icon-remove icon-white"></i></a></td>';
    table += '</tr>';
    });

table += '</tbody></table>';

$('div#content').html(table);
}

我使用 Firebug 对其进行了测试。表明

{"data":[{},{},{},{},{},{},{},{},{},{},{},{},{}]} 

作为响应。任何人请帮助我。谢谢。

4

2 回答 2

2

您需要module.config.php在 template_map 添加中配置并添加策略。

'strategies' => array(
        'ViewJsonStrategy',
    ),

返回一个 jsonModel。

如果您想在控制器中使用 jsonModel,您需要像这样调用它:

    $json = new JsonModel(array(
    'param'   => 'foobar',
    'success' => true,
    ));

    return $json;
于 2013-09-13T07:54:23.253 回答
2

问题在于您的 fetchAll 方法。试试这个更新的版本:

public function fetchAll() {
    $resultSet = $this->select(function (Select $select) {
        $select->order('created ASC');
    });
    $entities = array();
    foreach ($resultSet as $row) {
        $entity = array(
            "id"      => $row->id,
            "note"    => $row->note,
            "created" => $row->created
        );
        $entities[] = $entity;
    }
    return $entities; 
}
于 2013-09-13T09:13:01.610 回答