簡體   English   中英

如何在Backbone.js中獲取錯誤消息?

[英]How do I get the error messages in Backbone.js?

我有一個關於Backbone.js中方法的success/error回調的問題。 由於我是新手,我的問題似乎很簡單或類似的問題。

據我所知,如果服務器上沒有錯誤 (例如,異常),則模型的save()fetch()方法會觸發success 問題是,我是否應該在服務器上拋出異常以獲取客戶端的錯誤類型? 讓我舉個例子來說明我的意思:

例如,我在網絡上有一個UI,可以為應用程序創建一個新用戶。 我的客戶端看起來像這樣:

var userView = Backbone.View.extend({

   initialize:function(){ ... },
   events: {
     'click #sign_up': 'createAccount'
   },
    createAccount: function() { 
      login = $('#login').val();
      password = $('#password').val();
      var user = new User(); // User is a model
      user.save({login: login, password: password},{
            success: function(data) {
               if (data != null) {
                  alert('success');                       
               } else {
                   alert('fail');
               }

            },
            error : function() {
                alert('error');     
            }
   }
});

因此,服務器端將是:

@Controller
@RequestMapping("/users")
public class UsersController {

@RequestMapping(method = RequestMethod.POST)
public @ResponseBody User createUser(@RequestBody User user) throws Exception {


    if (user == null || !user.isValid()) {
        return null;// not valid - error message 1
    }
    if (userDao.getUserByLogin(user.getLogin()) != null) {
        return null;// such user already exists! - error message 2
    }

    userDao.saveUser(user);

    return user;
}

我想要的是能夠相應地發送正確的錯誤消息。 如果我返回null ,那么success回調內的數據將是我在發送請求之前剛剛填充的模型。 如果我拋出異常,那么它將觸發error 在這一點上,我應該采取什么方法來滿足我的需求。

你不應該拋出異常。 那么你可以但是你應該在服務器端處理異常並且只返回正確的HTTP代碼。

例如

如果在服務器端找不到用戶,通常會返回404 HTTP狀態代碼。 404將觸發錯誤回調。

如果要在服務器上傳遞某些數據(如錯誤消息),則錯誤回調具有多個參數。 根據文件:

"error" (model, xhr, options) — when a model's save call fails on the server.

您可以在xhr對象中訪問錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM