2010-02-03 53 views
10

Đoạn mã sau hoạt động cho tôi bằng cách sử dụng jQuery 1.2.6 nhưng gây ra lỗi môi giới trong 1.4.Truyền mảng trong cuộc gọi ajax bằng cách sử dụng jQuery 1.4

var items = new Array(); 
items[0] = "Item 1"; 
items[1] = "Item 2"; 
items[2] = "Item 3"; 

var dataToSend = {'_service' : myService, '_program' : myProgram, 'selections' : items} ; 

$.ajax({  
type: "post", 
url: myURL, 
dataType: "text", 
data: dataToSend, 
success: function(request) {$('#results').html(request); } // End success 
}); // End ajax method 

Lỗi môi giới tôi nhận thấy rằng những gì đang được thông qua trong các lựa chọn là 'lựa chọn []'

ERROR:. (nhân vật không hợp lệ "[" trong tên trường "Lựa chọn []" Nhân vật này không được phép trong tên trường.)

Có sự thay đổi trong cách jQuery xử lý mảng trong cuộc gọi ajax không? hoặc là một cách không chính xác để vượt qua một mảng?

Mọi trợ giúp sẽ được đánh giá cao.

EDIT: Câu trả lời từ @jvenema đã giải quyết được sự cố của tôi. Với cài đặt "truyền thống", bạn có thể khiến jQuery xử lý các thông số như phiên bản trước. Dưới đây là một số liên kết bổ sung đề cập đến thay đổi jQuery.ajax(), jQuery.param() và bài đăng trên blog jQuery 1.4 $.param demystified.

Hoặc là một tuyên bố chung của

jQuery.ajaxSettings.traditional = true; 

hoặc như là một tùy chọn bổ sung trong các cuộc gọi ajax

$.ajax({  
traditional: true, 
type: "post", 
url: myURL, 
dataType: "text", 
data: dataToSend, 
success: function(request) { 
    $('#results').html(request); 
} // End success 
}); // End ajax method 

Trả lời

21

jQuery 1.4 đã được cập nhật để sử dụng cú pháp PHP để gửi mảng. Bạn có thể chuyển đổi nó thành kiểu cũ bằng cách sử dụng:

jQuery.ajaxSetting.traditional = true; 

Xem here để biết chi tiết.

+3

Ngoài ra, bạn nên đề cập đến cách thực hiện nó cho một cuộc gọi Ajax đơn: thêm truyền thống: true vào đối tượng $ .Ajax. –

+0

Có cách nào để có được kết quả này với 'getJSON()' hay tôi phải sử dụng 'ajax()'? – hippietrail

0

Bạn có thể chỉ định các mảng như mảng Json.

'selections' : {items : ['Item 1', 'Item 2', 'Item 3']} 

Tôi nghĩ rằng điều này cũng sẽ hoạt động.

'selections' : {items : items} 

Hãy xem here để biết thêm tài nguyên.

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