ฉันมีองค์ประกอบที่เลือกสองรายการคือ A และ B: เมื่อตัวเลือกที่เลือกของ A เปลี่ยนไปตัวเลือกของ B จะต้องได้รับการอัปเดตตามนั้น แต่ละองค์ประกอบใน A แสดงถึงองค์ประกอบหลายอย่างใน B ซึ่งเป็นความสัมพันธ์แบบหนึ่งต่อกลุ่ม (A ประกอบด้วยประเทศ B ควรมีเมืองที่ตั้งอยู่ในประเทศที่กำหนด)
ฟังก์ชัน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 ฉันได้เพิ่มการเรียกใช้ฟังก์ชันในonChange
เหตุการณ์ของ A นี่คือฟังก์ชันที่ทำงานเมื่อเหตุการณ์ onChange (of A
) ถูกทริกเกอร์:
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ซึ่ง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" ซึ่งถูกบีบอัดทั้งหมดดังนั้นฉันจึงไม่สามารถเข้าใจได้ว่าส่วนใดของโค้ดที่ทำให้เกิดข้อผิดพลาด
มีการตั้งค่าใดบ้างที่ฉันสามารถเปลี่ยนรหัสของฉันเพื่อให้รับข้อมูลเป็นอาร์เรย์เชื่อมโยงได้