带有数据选项的Backbone.js fetch方法是使用方括号传递URL params

时间:2013-08-28 15:26:04

标签: backbone.js backbone-collections

我有以下代码来获取我的集合的数据,但是指定了应该来自服务器的颜色:

fruits = new FruitsCollection();
fruits.fetch({
    data: {color: ['red', 'green']}
});

这就是我的期望:

http://localhost:8000/api/fruits/?color=red&color=green

这就是我得到的:

http://localhost:8000/api/fruits/?color[]=red&color[]=green

正如您所看到的,由于某些未知原因Backbone.js将方括号添加到URL参数,而不是color=green我有color[]=green

我在服务器端使用django-rest-framework,我知道我可以在那里进行硬编码修复,但我更喜欢知道逻辑原因,因为它正在发生,我如何从我的javascript中解决它。 / p>

1 个答案:

答案 0 :(得分:17)

Backbone在ajax请求下使用jQuery.ajax,因此您需要使用traditional: true选项来使用“传统”parameter serialization

fruits = new FruitsCollection();
fruits.fetch({
    traditional: true,
    data: {color: ['red', 'green']}
});