Магистраль - как наша модель знает, отправляет ли сервер «Сообщение об ошибке» с использованием PHP - PullRequest
3 голосов
/ 03 апреля 2012

У меня есть модель, имеющая свойство url. Когда я сохраняю модель, используя метод «Сохранить», она отправляет запрос на сервер. Если связь успешна, срабатывает метод success (), а если связь не удалась, запускается функция «ошибка». Но что, если не возникает проблем со связью, кроме случаев, когда сервер отправляет «сообщение об ошибке» из-за некоторых проверок сервера или по другим причинам? Так как из-за проверок на стороне сервера (или других) модель не сохраняется на сервере. Таким образом, это не должно быть сохранено в базовой модели также. Что я должен сделать, чтобы сказать модели не сохранять, когда сервер отправляет сообщение «Ошибка обновления базы данных», и сказать, чтобы сохранить, когда я получаю «Успешно обновлено» Я отправляю нижеприведенный ответ с сервера:

    $this->response(
        array(
             'model'=>$model,
             'status'=>$status,
             'metamodel'=>array(),
             'message'=>$msg  (either success or fail)(my custom message)
            )
          ); 

на стороне клиента, я экономлю вот так.

        model.save(attr{
          success:(model,res)->
            // to do when communication success
          error:(model,res)->
            //to do when communication fails
         })

Итак, как я могу проверить, основываясь на сообщении или статусе, сервер успешно или нет? И как я могу сказать модели не сохранять и не отменять изменения, когда сервер говорит «нет» (НЕ ВНУТРЕННЯЯ ОШИБКА СЕРВЕРА, моя пользовательская ошибка bcoz проверок или другие причины)

Кроме того, как я могу использовать метод Backbone.Sync (практический пример, связанный с моим кодом, пожалуйста) и что это делает? (пожалуйста, укажите, была ли проблема со связью, сообщение об ошибке или внутренняя ошибка сервера)

Я могу получить доступ к «status» и «message» в методе «success», но как я могу использовать их, чтобы отменить изменения в модели. Спасибо

1 Ответ

2 голосов
/ 20 апреля 2012

Перезаписать метод parse(response) на модели и проверить наличие флага ошибки.http://documentcloud.github.com/backbone/#Model-parse

...