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

Cri*_*jas 9 backbone.js backbone.js-collections

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

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

这就是我的期望:

http://localhost:8000/api/fruits/?color=red&color=green
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

http://localhost:8000/api/fruits/?color[]=red&color[]=green
Run Code Online (Sandbox Code Playgroud)

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

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

nem*_*esv 17

Backbone 在ajax请求下使用jQuery.ajax,因此您需要使用traditional: true选项来使用"传统" 参数序列化:

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