Backbonejs模型在AJAX请求中保存在数组周围放置双引号

时间:2016-07-13 16:50:17

标签: javascript jquery arrays ajax backbone.js

我正在做一个非常基本的Backbonejs model.save:

this.model.save(null, {
    success: function(model, response)
    {

    },

    error: function(model, response)
    {

    }
});

该模型包含一些字符串属性和一组对象。当我查看Backbone所做的原始ajax请求时(我相信使用jQuery ajax),它将数组包装在双引号中。这会导致我的端点尝试将值解析为字符串,而不是数组:

{
    id: 108,
    name: "My model",
    questions: "[{"id": 100, "name": "question 1"}, {"id": 101, "name": "question 2"}]"
}

之前有没有遇到过这个?有没有办法迫使Backbone / jQuery不用引号括起数组,即:

questions: [{"id": 100, "name": "question 1"}, {"id": 101, "name": "question 2"}]

更新,骨干的同步函数在model.toJSON的输出上调用JSON.stringify,而JSON.stringify是添加这些引号的内容。例如:

console.log(JSON.stringify({name: 'test1', animals: ['horse', 'pig']}));

输出:

{"name":"test1","animals":"[\"horse\", \"pig\"]"}

1 个答案:

答案 0 :(得分:0)

我们正在使用旧版本的prototype.js,v.1.6.0.3,这导致了这个问题。 添加以下内容解决了它:

if(window.Prototype) 
{
    // Disable prototype's buggy version of toJSON for arrays
    delete Array.prototype.toJSON;
}

感谢:https://stackoverflow.com/a/20331694/1449 并且:JSON.stringify() array bizarreness with Prototype.js