Tôi có hai phần tử chọn, A và B: khi tùy chọn đã chọn A thay đổi, các tùy chọn của B phải được cập nhật tương ứng. Mỗi phần tử trong A 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 nên chứa các thành phố nằm trong quốc gia cụ thể).JQuery: 'Uncaught TypeError: Gọi bất hợp pháp' theo yêu cầu ajax khi tham số dữ liệu là mảng
Chức năng do_ajax
nên chạy theo 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 tùy chọn B Tôi đã thêm một cuộc gọi chức năng trong trường hợp của một onChange
. Đây là chức năng mà chạy khi onChange sự kiện (của 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 JQuery docs rằng data
có thể là một mảng (cặp giá trị key). Tôi nhận được lỗi nếu tôi đặt:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Thay vào đó, tôi không nhận được rằng 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.
Uncaught TypeError: Illegal invocation
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 đã đưa 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ảng kết hợp không?
+1 cho bạn ... :-) – Sarfraz
Bạn đã lưu tôi như ... một triệu giờ. Cảm ơn bạn! –
chính xác những gì tôi đang làm. Quên sử dụng .val() –