2013-08-28 48 views
9

Tôi có đoạn code sau đây để lấy dữ liệu cho bộ sưu tập của tôi, nhưng với quy định cụ thể những gì màu sắc phải xuất phát từ server:Backbone.js lấy phương pháp với tùy chọn dữ liệu được truyền params URL với dấu ngoặc vuông

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

Đây là những gì tôi mong đợi:

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

Đây là những gì tôi nhận:

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

Như bạn có thể thấy, đối với một số không rõ Lý do nown Backbone.js được phụ thêm các dấu ngoặc vuông góc với params URL, thay vì phải color=green Tôi có color[]=green

Tôi đang sử dụng django-rest-framework ở phía máy chủ và tôi biết tôi có thể làm một sửa chữa hardcoded ở đó, nhưng tôi thích biết lý do logic bởi vì nó đang xảy ra và làm thế nào tôi có thể giải quyết nó từ javascript của tôi.

Trả lời

17

Backbone sử dụng jQuery.ajax dưới mui xe cho yêu cầu ajax vì vậy bạn cần phải sử dụng traditional: true tùy chọn để sử dụng "truyền thống" parameter serialization:

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

Làm việc như mong đợi, đây là câu trả lời tôi muốn. Nhưng một câu hỏi khác xuất hiện, làm thế nào bạn tìm thấy tùy chọn này? Tôi không thể nhìn thấy nó trong tài liệu. –

+1

Trong tài liệu về xương sống, nó được mô tả theo phương thức 'fetch': http://backbonejs.org/#Collection-fetch để bạn có thể chuyển vào bất kỳ tùy chọn jQuery.ajax nào và' truyền thống' từ tài liệu jquery: http : //api.jquery.com/jQuery.ajax/ – nemesv

+0

Cảm ơn rất nhiều !!!! – Matiishyn