Я предпочитаю этот способ в вашем методе:
public function executeSomeAction($request)
{
if ($request->isXmlHttpRequest())
{
$this->actAsJsonResponse(); // here you set headers and other things
/**
* $code - 0, if all's fine, other on error
* $message - verbal message that describe the error, or success
* $extra - any data to send.
*/
return $this->prepareJsonResponse($code, $message, $extra);
}
}
В результате в моей структуре у меня есть что-то вроде:
public function executeSave(\Lighty\Request\Request $request)
{
$this->actAsJsonResponse();
$p = \Lighty\Model\ParticipantSqlAdapter::getInstance()->findById($this->getUser()->getIdParticipant());
$data = $request->get('profile', \Lighty\Request\Request::POST, array());
if (count($data))
{
$form = new \Form\Profile(array(
'default' => array_merge($p->getAccount()->getArray(), $p->getArray(), $data),
));
if ($form->save($p))
{
if (isset($data['tags']))
{
$tags = explode(',', $data['tags']);
array_trim($tags);
$tags = array_unique($tags);
$data['tags'] = implode(', ', $tags);
unset($tags);
}
$this->prepareMetaResponse(0, 'Your profile saved successfully', array('updated' => $data));
}
else
{
$this->prepareMetaResponse(1, 'Passed data is invalid', array('error' => $form->getErrors()));
}
}
else
{
$this->prepareMetaResponse(2, 'Not enough data passed');
}
}
Тогда вы упростите обработку запроса на стороне клиента:1007 *
if (response.code == 0) {
// do whatever you need to, on success
} else {
alert(response.code + ' ' + response.message);
}
Надеюсь, это поможет.