Ответ 1
Если вы возвращаете статус http, отличный от 2XX, вы уже на полпути выполняете задание.:-) В принципе, что вы можете сделать, это отправить обратно все, что вы хотите назад в качестве ответа.
Например, вы можете просто отправить что-то вроде этого:
// Send back http status 500
echo 'Could not save, server error';
Состояние 500 вызовет обратный вызов ошибки Backbone, и ваш ответ будет объектом jqXHR. В приведенном выше примере вы можете получить сообщение, выполнив что-то подобное в обратном вызове.
model.save({},{
error: function(model, response) {
console.log(response.responseText);
}
});
Это самый простой способ вернуть некоторые данные/сообщение об ошибке, возникшей на стороне сервера. Вы можете, конечно, создать более сложные данные, которые будут возвращены с сервера:
// I'm using SLIM RESTful framework...
$dataOut = array('error'=>'Validation type', 'message'=>'Did not validate');
$response->body(json_encode($dataOut));
Таким же образом вы можете получить доступ к этому ответу так:
model.save({},{
error: function(model, response) {
var responseObj = $.parseJSON(response.responseText);
console.log('Type: ' + responseObj.error + ' Message: ' + responseObj.message);
}
});
Или что-то в этом роде.
Поскольку ответ, переданный в ваш обратный вызов, является объектом jqXHR, у вас есть полный доступ ко всем его свойствам, которые вы можете использовать:
E.g.
response.readyState
response.status
response.statusText // etc.
Магистралу требуется только статус http, возвращенный с сервера, чтобы выполнить свою задачу.