0

我在 Zend 中使用 AJAX 时遇到了一些问题。抱歉,如果我有点漫不经心。我宁愿提供太多信息也不愿提供不足。

OK, so I have a table of events in my view tpl that should be updated when when a set of dates is selected. In order to do this, when dates are selected, I have an AJAX request sent to "Controller/Action?dates=somedates". 然后完成了一些代码来分解它并通过模型发送一个 mysql 请求。然后模型返回一个事件数组给控制器。

到目前为止,所有这些都运行良好。我从这里遇到的问题是将这个数组返回给 JQuery,这样我就可以将它插入到我的 tpl 上的表中。每当 PHP 在操作中点击 return 语句时,它就会尝试重新加载页面。

function getEvents(){
    var string = $('#datesselect .entrybox').find('.selected').attr('data-cleandate');

    $.ajax({
        url : '/Listing/getevents?dates=' + string,
        type : 'get',
        success : function(data){
            console.log(data);
        }
    });
}

基本上我只想要以下内容:AJAX 调用 PHP > PHP 进行模型调用并返回结果数组 > 数组被传递回 JQuery 而无需重新加载页面。

这可能吗?我在做一些根本错误的事情吗?有什么想法吗?

谢谢你的时间。

4

1 回答 1

1

将此添加到您的控制器:

public function init()
{
    $ajaxContext = $this->_helper->getHelper('AjaxContext');
    $ajaxContext->addActionContext('getevents', array('json', 'html'))->initContext();
}

这将告诉 zend 您返回 json 或 html 格式。

然后在您geteventsAction执行以下操作:

$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
echo Zend_Json::encode($your_json_data);
exit;

这将阻止您的布局和视图的呈现,并且只会输出您的 json。

您也可以使用$.getJSON。这会将您返回的数据视为 json。

于 2013-08-20T12:53:03.527 回答