jQuery v1.7.2
Saya memiliki fungsi ini yang memberi saya kesalahan berikut saat menjalankan:
Uncaught TypeError: Illegal invocation
Berikut fungsinya:
$('form[name="twp-tool-distance-form"]').on('submit', function(e) {
e.preventDefault();
var from = $('form[name="twp-tool-distance-form"] input[name="from"]');
var to = $('form[name="twp-tool-distance-form"] input[name="to"]');
var unit = $('form[name="twp-tool-distance-form"] input[name="unit"]');
var speed = game.unit.speed($(unit).val());
if (!/^\d{3}\|\d{3}$/.test($(from).val()))
{
$(from).css('border-color', 'red');
return false;
}
if (!/^\d{3}\|\d{3}$/.test($(to).val()))
{
$(to).css('border-color', 'red');
return false;
}
var data = {
from : from,
to : to,
speed : speed
};
$.ajax({
url : base_url+'index.php',
type: 'POST',
dataType: 'json',
data: data,
cache : false
}).done(function(response) {
alert(response);
});
return false;
});
Jika saya menghapus data
dari panggilan ajax, itu berhasil .. ada saran?
Terima kasih!
from
dari data. Mungkin ini bertentangan dengan jquery dariJawaban:
Saya pikir Anda perlu memiliki string sebagai nilai datanya. Sepertinya ada sesuatu secara internal dalam jQuery yang tidak mengkodekan / membuat serial dengan benar Objek Ke & Dari.
Mencoba:
Perhatikan juga pada baris:
Anda tidak memerlukan pembungkus jQuery karena To & From sudah menjadi objek jQuery.
sumber
$from = $('#from');
Ini membantu saya mengingat bahwa itu mewakili objek jQuery yang membantu menghindari memanggil metode pada sesuatu yang berupa string atau mencoba memanipulasi string dengan.toString()
atau sesuatu ketika itu adalah objek jQuery..val()
bagian yang hilang, jadi tidak melewati nilainya.Coba atur processData: false dalam pengaturan ajax seperti ini
sumber
By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data, set this option to false.
contentType: false
. Saya lakukan saat mengunggah file. Lihat stackoverflow.com/questions/21044798/…Sebagai catatan, itu juga bisa terjadi jika Anda mencoba menggunakan variabel yang tidak dideklarasikan dalam data seperti
sumber
Jika Anda ingin mengirimkan formulir menggunakan Javascript FormData API dengan mengunggah file, Anda perlu menyetel dua opsi di bawah ini:
Anda dapat mencoba sebagai berikut:
sumber
Dalam kasus saya, saya baru saja berubah
Catatan: Ini dalam kasus Django, jadi saya menambahkan
csrftoken
. Dalam kasus Anda, Anda mungkin tidak membutuhkannya.untuk
dan itu berhasil.
sumber
Dalam kasus saya, saya belum menentukan semua variabel yang saya teruskan ke data di ajax.
Saya baru saja mendefinisikan variabel
var search_candidate = "candidate name";
dan cara kerjanya.sumber
Masalah saya tidak terkait dengan
processData
. Itu karena saya mengirim fungsi yang tidak dapat dipanggil nantiapply
karena tidak memiliki cukup argumen. Secara khusus saya seharusnya tidak digunakanalert
sebagaierror
panggilan balik.Lihat jawaban ini untuk informasi lebih lanjut tentang mengapa itu bisa menjadi masalah: Mengapa panggilan fungsi tertentu disebut "pemanggilan ilegal" di JavaScript?
Cara saya dapat menemukan ini adalah dengan menambahkan a
console.log(list[ firingIndex ])
ke jQuery sehingga saya dapat melacak apa yang ditembakkannya.Ini adalah perbaikannya:
sumber
Dalam kasus saya (menggunakan webpack 4) dalam fungsi anonim, yang saya gunakan sebagai panggilan balik.
Saya harus menggunakan
window.$.ajax()
alih-alih$.ajax()
meskipun memiliki:sumber
Juga ini penyebabnya juga: Jika Anda membuat koleksi jQuery (melalui .map () atau yang serupa) maka Anda tidak boleh menggunakan koleksi ini dalam data .ajax (). Karena itu masih objek jQuery , bukan JavaScript Array biasa . Anda harus menggunakan .get () di dan untuk mendapatkan array js biasa dan harus menggunakannya pada setelan data di .ajax ().
sumber