AJAXを介してリクエストを送信するときに、レイアウトのレンダリングを停止するにはどうすればよいですか..私が直面している問題は、jsonデータがブラウザにエコーされ、jqueryのコールバック機能に渡されないことです
これが私のスクリプトです
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);
}
}
最初に、そのレイアウトがまだレンダリングされていることに直面しましたが、get-privileges.phtml ビュー ページがなくても、json が画面に出力されます。
そしてコントローラのinit()メソッドで、私はこのようにします
public function init() {
$ajaxContextSwitch = Zend_Controller_Action_HelperBroker::getStaticHelper('AjaxContext');
$ajaxContextSwitch->setDefaultContext('json');
$ajaxContextSwitch->addActionContext('getPrivileges', 'json');
$ajaxContextSwitch->initContext();
}
jqueryのコールバック機能に応答を配信するにはどうすればよいですか! すべての URL にカスタム ルートがあるわけではないことに注意してください。
Zend フレームワークを使用した開発からほぼ引退するので、助けてください !!