我有兩個select元素,A和B:當A的選擇選項更改時,B的選項必須相應更新。 A中的每個元素意味着B中的許多元素,這是一種一對多的關係(A包含國家,B包含位於特定國家的城市)。當數據參數是數組時,jQuery:'Uncaught TypeError:非法調用'在ajax請求時
功能do_ajax
應該運行的異步請求:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
爲了更新B的選項我已在A的onChange
事件函數調用。這裏是當被觸發(的A
)onChange事件運行功能:
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');
}
}
我在JQuery docs閱讀data
可以是一個數組(鍵值對)。我得到的錯誤,如果我把:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
相反,如果我的數據是一個字符串我沒有得到這個錯誤:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
但我需要的變量「數組版本」,在我的服務器端PHP代碼。
Uncaught TypeError: Illegal invocation
位於「jquery-1.7.2.min.js」文件中,該文件全部壓縮,所以我找不出哪部分代碼會引發錯誤。
是否有任何設置可以在我的代碼中更改,以便它將數據作爲關聯數組接受?
+1給你...... :-) – Sarfraz
你爲我節省了......百萬小時。謝謝! –
正是我在做什麼。忘了使用.val() –