Tôi có hai phần tử lựa chọn, A và B: khi tùy chọn được chọn của A thay đổi, các tùy chọn của B phải được cập nhật cho phù hợp. Mỗi phần tử trong A bao hàm nhiều phần tử trong B, đó là mối quan hệ một-nhiều (A chứa các quốc gia, B chứa các thành phố nằm trong quốc gia đã cho).
Hàm do_ajax
sẽ chạy yêu cầu không đồng bộ:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
Để cập nhật các tùy chọn của B, tôi đã thêm một lệnh gọi hàm trong onChange
sự kiện của A. Đây là hàm chạy khi sự kiện onChange (of A
) được kích hoạt:
function my_onchange(e) // "e" is element "A"
{
var sel_B = ... ; // get select element "B"
// I skipped some code here
// ...
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
do_ajax(city_sel, data, 'ajax_handler.php');
}
}
Tôi đã đọc trong tài liệu JQuery rằng data
có thể là một mảng (cặp giá trị key). Tôi gặp lỗi nếu tôi đặt:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Thay vào đó, tôi không gặp lỗi đó nếu dữ liệu của tôi là một chuỗi:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Nhưng tôi cần "phiên bản mảng" của biến, trong mã php phía máy chủ của tôi.
Tập tin Uncaught TypeError: Illegal invocation
này nằm trong tệp "jquery-1.7.2.min.js", tất cả đều được nén, vì vậy tôi không thể tìm ra phần mã nào gây ra lỗi.
Có bất kỳ cài đặt nào tôi có thể thay đổi trong mã của mình để nó chấp nhận dữ liệu dưới dạng một mảng kết hợp không?