Saya mencoba membuat permintaan AJAX sederhana yang mengembalikan beberapa data dari database MySQL. Inilah fungsi saya di bawah ini:
function AJAXrequest(url, postedData, callback) {
$.ajax() ({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
}
... dan di sinilah saya menyebutnya, parsing pada parameter yang diperlukan:
AJAXrequest('voting.ajax.php', imageData, function(data) {
console.log("success!");
});
Namun, panggilan balik kesuksesan saya tidak berjalan (karena "sukses!" Tidak masuk ke konsol), dan saya mendapatkan kesalahan di konsol saya:
TypeError: $.ajax(...) is not a function.
success: callback
Apa artinya ini? Saya telah melakukan permintaan AJAX sebelumnya di mana peristiwa sukses memicu fungsi anonim dalam $ .ajax, tapi sekarang saya mencoba menjalankan fungsi bernama terpisah (dalam hal ini, panggilan balik). Bagaimana saya melakukannya?
$.ajax
tanpa argumen ($.ajax()
) dan nilai kembali adalah objek jqXHR, yang bukan merupakan fungsi. Maka$.ajax()(...)
akan terjadi kesalahan.Jawaban:
Tidak ada jawaban di sini yang membantu saya. Masalahnya adalah: Saya menggunakan jQuery , yang memiliki beberapa hal dihapus, ajax menjadi salah satunya.
Solusinya: Cukup unduh versi jQuery biasa (dikompres atau tidak) di sini dan sertakan dalam proyek Anda.
sumber
$.ajax
dihapus dari bangunan "ramping"?Periksa ulang apakah Anda menggunakan jquery versi lengkap dan bukan versi ramping.
Saya menggunakan tautan skrip cdn-jquery yang dilengkapi dengan jquery. Masalahnya adalah yang ini secara default adalah slim.jquery.js yang tidak memiliki
ajax
fungsi di dalamnya. Jadi, jika Anda menggunakan tautan skrip jquery versi ramping (disalin dari situs Bootstrap), gunakan versi lengkapnya.Artinya, gunakan kata
<script src="https://code.jquery.com/jquery-3.1.1.min.js">
ganti<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"
sumber
Tidak yakin, tetapi sepertinya Anda memiliki kesalahan sintaksis dalam kode Anda. Mencoba:
Anda memiliki tanda kurung tambahan di samping
$.ajax
yang tidak diperlukan. Jika Anda masih mendapatkan kesalahan, maka file skrip jQuery tidak dimuat.sumber
$.ajax()();
. Ini adalah JavaScript yang valid. Ini berarti "panggil$.ajax
dan apa pun yang dikembalikan, panggil juga". Tetapi$.ajax
tidak mengembalikan fungsi (yang bisa disebut), ia mengembalikanjqXHR
objek, sehingga melempar kesalahan. Jawaban Anda benar, tambahan()
adalah masalahnya, tetapi deskripsi masalahnya tidak benar (itu bukan kesalahan sintaksis, setidaknya tidak untuk parser).$
), tetapi itu bukan kesalahan sintaksis karena JS valid. Hanya saja, sintaksis yang tidak sesuai untuk perilaku yang diinginkan, sehingga menyebabkan kesalahan runtime seperti yang dijelaskan oleh Felix.Lihat Dokumentasi Jquery
sumber
Anda memiliki kesalahan dalam fungsi AJAX Anda, terlalu banyak tanda kurung, coba saja
$.ajax({
sumber
Referensi versi min jquery yang mencakup ajax:
sumber
Ada kesalahan sintaksis karena Anda telah menempatkan tanda kurung setelah fungsi ajax dan seperangkat tanda kurung lain untuk menentukan daftar argumen: -
Seperti yang telah Anda tulis: -
Tanda kurung di sekitar ajax harus dihapus harus: -
sumber
Saya mengalami pertanyaan yang sama, dan solusi saya adalah: tambahkan skrip JQuery.
Terutama, kita harus memastikan JQuery terkait dimuat ketika kita debug js kita di bawah firefox / chrome.
sumber
Jika Anda menggunakan template html bootstrap, ingatlah untuk menghapus tautan ke jquery slim di bagian bawah template. Saya memposting detail ini di sini karena saya belum dapat mengomentari jawaban ..
sumber
Bagi siapa pun yang mencoba menjalankan ini dalam nodejs : Ini tidak akan bekerja di luar kotak, karena jquery membutuhkan peramban (atau yang serupa)! Saya hanya mencoba untuk menjalankan impor dan login
console.log($)
yang menulis[Function]
dan kemudian jugaconsole.log($.ajax)
yang kembaliundefined
. Saya tidak memilikitsc
kesalahan dan autocomplete dari intellij, jadi saya bertanya-tanya apa yang terjadi.Kemudian di beberapa titik saya menyadari bahwa
node
mungkin itu masalah dan bukan naskah. Saya mencoba kode yang sama di browser dan berhasil. Untuk membuatnya bekerja, Anda perlu menjalankan:(kredit: https://stackoverflow.com/a/4129032/3022127 )
sumber
Ini sudah terlambat untuk jawaban tetapi tanggapan ini mungkin bermanfaat bagi pembaca di masa mendatang.
Saya ingin berbagi skenario di mana, katakanlah ada beberapa file html ( satu basis html dan beberapa sub-HTML ) dan $ .ajax digunakan di salah satu sub-HTML.
Misalkan dalam sub-HTML, js disertakan melalui URL " https://code.jquery.com/jquery-3.5.0.js " dan dalam HTML induk / induk, melalui URL - " https: //code.jquery .com / jquery-3.1.1.slim.min.js ", maka versi ramping JS akan digunakan di semua halaman yang menggunakan sub-HTML ini dan juga HTML dasar yang disebutkan di atas.
Ini terutama berlaku jika menggunakan kerangka bootstrap yang memuat js menggunakan " https://code.jquery.com/jquery-3.1.1.slim.min.js ".
Jadi untuk menyelesaikan masalah, perlu memastikan bahwa di semua halaman, js disertakan melalui URL " https://code.jquery.com/jquery-3.5.0.js " atau apa pun URL terbaru yang berisi semua perpustakaan JQuery.
Terima kasih kepada Lily H. karena mengarahkan saya ke jawaban ini.
sumber
izinkan saya berbagi pengalaman saya:
desainer halaman html saya gunakan:
ketika saya membuat permintaan AJAX sederhana, mendapatkan kesalahan yang mengatakan, TypeError: $ .ajax (...) bukan fungsi
Jadi, saya menambahkan:
kemudian, setidaknya itu berfungsi dengan baik untuk saya.
sumber