当通过AJAX发送请求时,如何停止布局渲染.. 我面对的问题是json数据在浏览器上回显,而不是传递给回调函数jquery停止使用自定义路由的Ajax请求的布局渲染
,这里是我的脚本
jQuery.ajax({
url: "/getPrivileges",
type: "POST",
dataType: 'JSON',
success: function(privileges){
alert('hellooo');
buildTree(privileges,".privBox h2");
if($(".privPrivilege"))
$("#loading").css("visibility","hidden");
},
error: function (request, status, error) {
alert('Error'+request.responseText);
}
});
和这里的路由
resources.router.routes.privilege.route = /getPrivileges
resources.router.routes.privilege.defaults.module = privileges
resources.router.routes.privilege.defaults.controller = privilege
resources.router.routes.privilege.defaults.action = get-privileges
,这里是我的控制器
public function getPrivilegesAction() {
if ($this->getRequest()->isXmlHttpRequest()) {
...........
...........
$this->_helper->json($appPrivArray);
$this->_helper->viewRenderer->setNoRender(TRUE);
$this->_helper->layout->disableLayout();
$response = $this->getResponse();
$response->setHeader('Content-type', 'application/json', true);
}
}
首先,我面对的布局仍然呈现,但现在的JSON被打印在屏幕上,即使我没有get-privileges.phtml查看页面。
,并在控制器的init()方法,我作出这样
public function init() {
$ajaxContextSwitch = Zend_Controller_Action_HelperBroker::getStaticHelper('AjaxContext');
$ajaxContextSwitch->setDefaultContext('json');
$ajaxContextSwitch->addActionContext('getPrivileges', 'json');
$ajaxContextSwitch->initContext();
}
我怎么能做出响应传递到回调的jQuery的功能! 重要的是要提到,并非所有的网址都有自定义路线..
请大家帮忙,因为我差不多会退出使用Zend框架的开发!
我把所有评论drew010 answer.please检查出来。 – palAlaa
如果仍然得到布局,则存在一种可能性,即操作中存在错误,并且布局显示异常消息和堆栈跟踪,而不仅仅返回json。你有没有检查过返回的代码,看看是否有任何异常消息? – Salman
我面临的问题是在路由中,我有两个同名的路由,所以这是问题.. – palAlaa