Backbone model.save在服务器发送200时返回错误:好的

Tar*_*run 4 backbone.js

我定义了以下Backbone模型:

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.'
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

我在Backbone.View中使用以下代码

// ... 
   initialize: function() {    
       this.model = new User();
       myUser = {
           userName: 'labuser1@example.com',
           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);
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

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

Request URL : https://server/login

Request Method:POST

Status Code:200 OK
Run Code Online (Sandbox Code Playgroud)

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

小智 11

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

...
this.model.save(myUser, {
    dataType: 'text',
    success: function () {
...
Run Code Online (Sandbox Code Playgroud)

或通过将正确的Content-type标头设置为application/json值来修复服务器端.