Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I'm having a bit of a problem using AJAX with Zend. Apologies if I'm rambling a little. I'd rather give too much information than not enough.

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". There is then some code done to break this up and send a mysql request through the model. The model then returns an array of events to the controller.

All of this so far works fine. The issue I have from here is getting this array back to JQuery so I can insert it into the table on my tpl. Whenever the PHP hits the return statement in the action, it tries to reload the page.

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);
        }
    });
}

Basically I just want the following: AJAX calls PHP > PHP does model call and returns array of results > Array is passed back to JQuery without reloading the page.

Is this possible? Am I doing something fundamentally wrong? Any ideas at all?

Thanks for your time.

share|improve this question

1 Answer 1

up vote 1 down vote accepted

Add this to your controller:

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

This will tell zend that you either return json or html format.

Then in your geteventsAction do the following:

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

This will prevent rendering of your layout and view and will only output your json.

You could also use $.getJSON. This will treat your returned data as json.

share|improve this answer
    
You are my new favourite person. –  Kaizen9001 Aug 20 '13 at 14:33

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.