Zend Controller Ajax调用面临错误

时间:2011-06-12 19:14:46

标签: zend-framework jquery

我的Zend控制器如下所示:

 public function deleteAction()
    {
        $this->_helper->layout->disableLayout();
         $id = (int)$this->_request->getPost('id');
        $costs = new Application_Model_DbTable_Costs();
        if($costs->deleteCosts($id)){
            $this->view->success = "deleted";
        }

    }

我用来发布数据的ajax调用是:

 $.ajax({
             dataType: 'json',
            url: 'index/delete',
            type: 'POST',
            data:id,
            success: function () {
             alert("success");
            },

            timeout: 13*60*1000,
            error: function(){
               console.log("Error");
            }

        });

在我的delete.phtml中,代码如下:

<?php 
    if($this->delete === true): 
        echo 'true';
    else:
        echo 'Sorry! we couldn\'t remove the source. Please try again.';
    endif;
?>

响应正在返回html。

这是我与Zend Framework的第一个项目。 提前谢谢。

1 个答案:

答案 0 :(得分:4)

您的控制器操作正在返回HTML,而不是JSON。

您应该考虑使用AjaxContext动作帮助

public function init()
{
    $this->_helper->ajaxContext->addActionContext('delete', 'json')
                               ->initContext();
}

public function deleteAction()
{
    $id = (int)$this->_request->getPost('id');
    $costs = new Application_Model_DbTable_Costs();
    try {
        $costs->deleteCosts($id));
        $this->view->success = "deleted";
    } catch (Exception $ex) {
        $this->view->error = $ex->getMessage();
    }    
}

您需要做的唯一其他事情是在AJAX请求中提供format json参数,例如

$.post('index/delete', { "id": id, "format": "json" }, function(data) {
    if (data.error) alert("Error: " + data.error);
    if (data.success) alert("Success: " + data.success);
}, "json");

您可能希望以不同方式处理响应,但这应该会给您一个想法。