2014-01-17 34 views
3

我已经定义了以下骨干型号:骨干model.save返回错误:OK

var User = Backbone.Model.extend({ 
     url: "/login", 
     contentType: "application/com.example.auth+json", 

     defaults: { 
      userName: '', 
      password: '' 
     }, 

     validate: function(attrs){ 
      if(!attrs.userName){ 
       return 'Please fill username field.' 
      } 
      if(!attrs.password){ 
       return 'Please fill password field.' 
      } 
     } 
    }); 

我用我Backbone.View下面的代码

// ... 
    initialize: function() {  
     this.model = new User(); 
     myUser = { 
      userName: '[email protected]', 
      password: 'abcd_1234', 
     }; 
    } 

    onSubmit: function() { 

     this.model.save(myUser, { 
      success: function() { 
       alert('You are authenticated'); 
       Backbone.trigger('Authenticated', {source: 'LOGIN'}); 
      }, 
      error: function (model, error) { 
       alert('Error: " + error); 
      } 
     }); 
    } 

我从后端接收以下响应,没有响应数据仅发送状态码返回:

Request URL : https://server/login 

Request Method:POST 

Status Code:200 OK 

B我得到'错误:[对象对象]'打印。为什么它没有到达成功处理程序,尽管服务器验证用户成功。如果需要,请告知如何在前端/后端解决此问题。

回答

11

您可以使用此代码dataType: 'text'修复它

... 
this.model.save(myUser, { 
    dataType: 'text', 
    success: function() { 
... 

或正确Content-type头设置为application/json值修复服务器端。

+0

谢谢,我添加了代码dataType:'text',问题已修复。 – Tarun

1

更新initialize到:

initialize: function() {  
     var myUser = { 
      userName: '[email protected]', 
      password: 'abcd_1234', 
     }; 
     this.model = new User(myUser); 
    } 

需要初始化你model hereand然后在 onSubmit功能,您可以直接保存:

onSubmit: function() { 

     this.model.save(null, { 
      success: function() { 
       alert('You are authenticated'); 
       Backbone.trigger('Authenticated', {source: 'LOGIN'}); 
      }, 
      error: function (model, error) { 
       alert('Error: " + error); 
      } 
     }); 
    } 

注:model.save应该用来创建一个新的模型并坚持它在后端,而不是验证。你可能想为此做一个不同的Ajax调用。

+0

你好Niranjan,感谢您的快速回复。对不起,错误,现在已经纠正。请再次重新查看我的代码。 – Tarun

+0

@tarun_telang我已经更新了答案。 –

+0

我按照您在回复中所述的方式进行操作,但仍然收到相同的错误。这可能是后端服务的问题吗?如果是的话,任何想法我们需要改变,以实现这个工作。 – Tarun

0

如果您的回答不包含任何内容,请在PUT(型号更新)的情况下确保返回状态204(无内容)而不是200(OK)。