Saya memiliki dua elemen terpilih, A dan B: ketika opsi yang dipilih A berubah, opsi B harus diperbarui. Setiap elemen di A menyiratkan banyak elemen di B, ini adalah hubungan satu-ke-banyak (A berisi negara, B harus berisi kota yang terletak di negara tertentu).
Fungsi tersebut do_ajax
harus menjalankan permintaan asinkron:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
Untuk memperbarui opsi B saya telah menambahkan panggilan fungsi di onChange
acara A. Berikut adalah fungsi yang berjalan saat event onChange (of A
) dipicu:
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');
}
}
Saya telah membaca di dokumen JQuery yang data
bisa berupa array (pasangan nilai kunci). Saya mendapatkan kesalahan jika saya meletakkan:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Sebaliknya, saya tidak mendapatkan kesalahan itu jika data saya adalah string:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Tetapi saya membutuhkan "versi array" dari variabel tersebut, dalam kode php sisi server saya.
Itu Uncaught TypeError: Illegal invocation
terletak di file "jquery-1.7.2.min.js", yang semuanya dikompresi, jadi saya tidak tahu bagian mana dari kode yang memunculkan kesalahan.
Apakah ada pengaturan yang dapat saya ubah dalam kode saya sehingga menerima data sebagai array asosiatif?
Dari dokumen jQuery untuk
processData
:Sumber: http://api.jquery.com/jquery.ajax
Sepertinya Anda harus menggunakan
processData
untuk mengirim data Anda ke server, atau memodifikasi skrip php Anda untuk mendukung parameter yang dikodekan querystring.sumber
Saya mendapatkan kesalahan ini saat memposting objek FormData karena saya tidak menyiapkan panggilan ajax dengan benar. Penyiapan di bawah memperbaiki masalah saya.
sumber
Ini objek bukan array:
Anda mungkin ingin:
sumber
$_GET
sisi server array saya (var_export($_GET)
keluaranarray ( 'undefined' => 'undefined', )
)$.ajax
penangan Anda :type:'get',
data
kunci harus ditemukan dalam array GET, bukan? Atau mungkin mereka dikirim melalui metode permintaan lain?data: {foo:'myfoo', bar:'mybar'}
, mungkin ada beberapa masalah lain menurut saya.e[e.selectedIndex]
sementara saya harus menyampaikan nilainyae[e.selectedIndex].value
. Setelah memperbaiki cacat ini, notasi objek berfungsi dengan baik.Mengalami masalah yang sama baru-baru ini, diselesaikan dengan menambahkan
traditional: true,
sumber
sumber
contentType
danprocessData
, kesalahan akan terus ditampilkan. Saya menambahkan dua bidang dan itu berhasil untuk saya. Saya pikir op mencoba untuk menunjukkan dua bidang penting.sumber
Coba ini:
sumber