2010-07-16 39 views
15

Tôi hiện đang có các mảng javascript sau:Làm cách nào để xóa các dấu ngoặc vuông ở cuối tên biến JS trong các cuộc gọi AJAX?

var stuffs = ['a', 'b']; 

tôi vượt qua trên để mã máy chủ sử dụng jQuery load:

var data = { 
    'stuffs': stuffs 
}; 

$(".output").load("/my-server-code/", data, function() { 
}); 

Về phía server, nếu tôi in các nội dung của request.POST (I 'hiện đang sử dụng Django), tôi nhận được:

'stuffs[]': [u'a', u'b'] 

Lưu ý [] ở chế độ pref ix của tên biến số stuffs. Có cách nào để xóa rằng [] trước khi nó đạt đến mã máy chủ không?

Trả lời

31

Đây là hành vi mặc định in jQuery 1.4+ ... nếu bạn muốn các bài được &stuffs=a&stuffs=b thay vì &stuffs[]=a&stuffs[]=b bạn nên thiết lập các traditional option để true, như thế này:

$.ajaxSetup({traditional: true}); 

Lưu ý điều này ảnh hưởng tất cả các yêu cầu ... mà thường là những gì bạn muốn trong trường hợp này. Nếu bạn muốn số điện thoại là theo yêu cầu, bạn nên sử dụng số gọi $.ajax() dài hơn và đặt traditional: true ở đó. You can find more info about traditional in the $.param() documentation.

+4

Trong 1,10 $ .ajaxSettings không được gọi - $ .ajaxSetup nên được sử dụng thay thế - việc sử dụng nó giống như trên. –

-3

[] cho biết biến là một mảng. Tôi tưởng tượng rằng việc thêm [] vào tên biến của bạn là cách Python/Django nói cho bạn biết đó là một mảng. Bạn có thể thực hiện chức năng in của riêng bạn mà không hiển thị chúng.

+0

Điều đó có nghĩa là phụ thêm [] đến từ Django thay vì javascript? –

-1

Khi một mảng được gửi bằng yêu cầu GET, thông qua biểu mẫu hoặc AJAX, mỗi phần tử được đặt tên mảng, theo sau là một cặp dấu ngoặc vuông tùy chọn trống. Vì vậy, jQuery đang tạo url http://example.com/get.php?stuff[]=a&stuff[]=b. Đây là cách duy nhất để gửi mảng và javascript đang theo tiêu chuẩn.

POST yêu cầu hoạt động chính xác theo cùng một cách (trừ khi json được gửi dưới dạng một chuỗi dài json).

Trong PHP, điều này được phân tích ngược trở lại mảng ban đầu, vì vậy mặc dù chuỗi truy vấn có thể hơi lạ, dữ liệu được nhận khi nó được gửi. $_GET['stuff'][0] hoạt động chính xác trong PHP.

Tôi không chắc cách Django phân tích chuỗi truy vấn.

+1

"Đây là cách duy nhất để gửi mảng và javascript đang theo tiêu chuẩn". - Đó là * không * một quy ước chuẩn nhưng Rails/PHP. Mảng có thể được gửi một cách hợp pháp như foo = 1 & foo = 2. – jholster

Các vấn đề liên quan