Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干模型。服务器发送200时保存返回错误:确定_Backbone.js - Fatal编程技术网

Backbone.js 主干模型。服务器发送200时保存返回错误:确定

Backbone.js 主干模型。服务器发送200时保存返回错误:确定,backbone.js,Backbone.js,我定义了以下主干模型: var User = Backbone.Model.extend({ url: "/login", contentType: "application/com.example.auth+json", defaults: { userName: '', password: '' }, validate: function(attrs){

我定义了以下主干模型:

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.'
            }
        }
    });
我在主干中使用以下代码

// ... 
   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);
            }
        });
    }
我从后端收到以下响应,未发送响应数据,仅返回状态代码:

Request URL : https://server/login

Request Method:POST

Status Code:200 OK

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

更新
初始化
至:

    initialize: function() {    
      var myUser = {
           userName: 'labuser1@example.com',
           password: 'abcd_1234',
       };
      this.model = new User(myUser);
    }
您需要在此处初始化您的
模型
,然后在中初始化
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调用。

您可以使用此代码
数据类型:“text”
来修复它

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

或者通过将正确的
内容类型
标题设置为
应用程序/json
值来修复服务器端。

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

您好,感谢您的快速回复。很抱歉,我现在已经更正了错误。请重新阅读我的代码。我正在按照您的回复中所述进行操作,但仍然会收到相同的错误。这可能是后端服务的问题吗?如果是,您是否知道我们需要更改什么才能使其正常工作。@tarun_telang您的登录服务返回什么?该服务不返回响应数据。它只返回HTTP状态200,如上所述。对于返回JSON对象的服务,我在Windows 8.1中遇到了问题。我能够看到Backbone.model.save()的成功回调在较旧的操作系统(适用于所有浏览器的Windows 7)中执行。其中as应用程序在Windows 8.1中与任何浏览器一起运行时都会保持等待,即使后端服务器将响应类型头设置为application/json。在尝试了保存Backbone.Model和analysis的各种选项之后,我发现添加数据类型:“text”,然后将响应转换为JSON.parse(响应)解决了我在Windows8.1中面临的问题。请更新您的体验?谢谢,我添加了代码数据类型:“text”,问题已经解决。