我正在做一个非常基本的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\"]"}
答案 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