I want to send Ajax request to controller, I make like this in the client side
jQuery.ajax({
url: "public/visits/visit/get-visits",
type: "POST",
dataType: 'json',
data: data,
success: function(data){
alert(data)
},
error:function(){
alert("fail :(");
}
});
at the server side I handle the request as other requests
public function getVisitsAction() {
if (isset($_POST)) {
$mapper = new Visits_Model_VisitsMapper();
$allVisits = $mapper->getAllVisits();
echo json_encode($allVisits);
}
When I call the action, fail alert occurs and when I check it out through fire bug I found that it returns the json data to client side to page get-visit.phtml.
How can I handle the response in the success function from the page that send the json request and redirecting it to get-visit.phtml page?
Zend has Zend_Controller_Action_Helper_Json which do these actions:
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
echo json_encode($allVisits);
exit;
So it could be even simpler:
public function getVisitsActions() {
if ($this->getRequest()->isXmlHttpRequest()) {
if ($this->getRequest()->isPost()) {
$mapper = new Visits_Model_VisitsMapper();
$this->_helper->json($mapper->getAllVisits());
}
}
else {
echo 'Not Ajax';
// ... Do normal controller logic here (To catch non ajax calls to the script)
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With