Saya memiliki acara klik jquery sederhana
<script type="text/javascript">
$(function() {
$('#post').click(function() {
alert("test");
});
});
</script>
dan referensi jquery yang ditentukan di site.master
<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>
Saya telah memeriksa bahwa skrip sedang diselesaikan dengan benar, saya dapat melihat markup dan melihat skrip secara langsung di firebug, jadi saya harus ditemukan. Namun, saya masih mendapatkan:
$ tidak didefinisikan
dan tidak ada jquery yang berfungsi. Saya juga sudah mencoba berbagai variasi seperti $ (dokumen). Sudah dan jQuery dll.
Ini adalah aplikasi MVC 2 di .net 3.5, saya yakin saya benar-benar padat, di mana-mana di google mengatakan untuk memeriksa file direferensikan dengan benar, yang telah saya periksa dan periksa lagi, mohon saran! : /
javascript
jquery
asp.net-mvc
Paul Creasey
sumber
sumber
Jawaban:
Kesalahan itu hanya dapat disebabkan oleh satu dari tiga hal:
Pertama-tama, pastikan, script apa yang dipanggil dengan benar, seharusnya terlihat seperti itu
dan seharusnya tidak memiliki atribut async atau defer .
Maka Anda harus memeriksa panel jaring Firebug untuk melihat apakah file tersebut benar-benar dimuat dengan benar. Jika tidak, itu akan disorot merah dan akan mengatakan "404" di sebelahnya. Jika file dimuat dengan benar, itu berarti bahwa masalahnya adalah nomor 2.
Pastikan semua kode javascript jQuery dijalankan di dalam blok kode seperti:
Ini akan memastikan bahwa kode Anda dimuat setelah jQuery diinisialisasi.
Satu hal terakhir yang perlu diperiksa adalah memastikan bahwa Anda tidak memuat plugin apa pun sebelum Anda memuat jQuery. Plugin memperpanjang objek "$", jadi jika Anda memuat plugin sebelum memuat jQuery core, maka Anda akan mendapatkan kesalahan yang Anda jelaskan.
Catatan: Jika Anda memuat kode yang tidak memerlukan jQuery untuk menjalankannya, tidak perlu ditempatkan di dalam penangan siap jQuery. Kode itu dapat dipisahkan menggunakan
document.readyState
.sumber
$(document)
tidak akan berfungsi kecuali Anda memiliki tag skrip termasuk jQuery sebelum pernyataan itu ...Bisa jadi Anda memiliki tag skrip Anda dipanggil sebelum skrip jquery dipanggil.
Hasil ini sebagai $ tidak didefinisikan
Letakkan jquery.js sebelum tag skrip Anda dan itu akan berfungsi;) seperti:
sumber
@section Scripts
tagPertama, Anda perlu memastikan bahwa skrip jQuery dimuat. Ini bisa dari CDN atau lokal di situs web Anda. Jika Anda tidak memuat ini terlebih dahulu sebelum mencoba menggunakan jQuery, ia akan memberi tahu Anda bahwa jQuery tidak didefinisikan.
Ini bisa di HEAD atau di footer halaman, pastikan Anda memuatnya sebelum Anda mencoba memanggil hal jQuery lainnya.
Maka Anda perlu menggunakan salah satu dari dua solusi di bawah ini
atau
perlu diketahui bahwa berkali-kali $ (dokumen). sudah (fungsi () {// kode di sini}); tidak akan bekerja.
sumber
Jika panggilan plugin jQuery di sebelahnya
</body>
, dan skrip Anda dimuat sebelum itu, Anda harus membuat kode Anda berjalan setelahwindow.onload
acara, seperti ini:`
jadi, kode Anda akan berjalan hanya setelah jendela dimuat, ketika semua aset telah dimuat. Pada titik itu, jQuery (
$
) akan ditentukan.Jika Anda menggunakannya:
`
yang
$
belum ditentukan saat ini, karena itu disebut sebelum jQuery dimuat, dan script Anda akan gagal pada baris pertama pada konsol.sumber
Saya hanya melakukan hal yang sama dan menemukan saya memiliki banyak
Jadi mereka memuat, tetapi tidak ada petunjuk lebih lanjut mengapa itu tidak bekerja. Tak perlu dikatakan, ejaan yang tepat memperbaikinya.
sumber
Gunakan bagian skrip dalam tampilan dan tata letak utama.
Letakkan semua skrip Anda didefinisikan dalam tampilan Anda di dalam bagian Skrip tampilan. Dengan cara ini Anda dapat memiliki tata letak master memuat ini setelah semua skrip lain dimuat. Ini adalah pengaturan default ketika memulai proyek web MVC5 baru. Tidak yakin tentang versi sebelumnya.
Tampilan / Foo / MyView.cshtml:
Tampilan / Dibagi / _Layout.cshtml
Perhatikan bagaimana bagian skrip ditampilkan terakhir dalam file tata letak master.
sumber
pastikan Anda benar-benar memuat jquery ini bukan jquery - ini ui!
Ini adalah sumber skrip yang tepat untuk jquery:
sumber
Seperti yang dinyatakan di atas, itu terjadi karena konflik $ variabel.
Saya menyelesaikan masalah ini dengan memesan variabel sekunder untuk jQuery tanpa konflik.
dan kemudian menggunakannya di mana saja
lebih detail dapat ditemukan di sini
sumber
Ini berarti bahwa pustaka jQuery Anda belum dimuat.
Anda dapat memindahkan kode setelah menarik pustaka jQuery.
atau Anda dapat menggunakan sesuatu seperti ini
sumber
Apakah Anda menggunakan perpustakaan JavaScript lain? Jika demikian, Anda mungkin perlu menggunakan jQuery dalam mode kompatibilitas:
http://docs.jquery.com/Using_jQuery_with_Other_Libraries
sumber
setelah beberapa tes saya menemukan solusi cepat, Anda dapat menambahkan di atas halaman indeks Anda:
itu bekerja dengan sangat baik :)
sumber
Saya mendapat pesan kesalahan yang sama ketika saya salah mengeja referensi jQuery dan bukannya
type="text/javascript"
saya mengetik "... javascirpt". ;)sumber
type="text/css"
. Terima kasih telah menyelamatkan kewarasan saya!type="javascript"
. Terbuang 30 menit menemukannya.Kedengarannya seperti jQuery tidak memuat dengan benar. Sumber / versi apa yang Anda gunakan?
Atau, itu bisa berupa tabrakan namespace, jadi coba gunakan jQuery secara eksplisit daripada menggunakan
$
. Jika berhasil, Anda mungkin ingin menggunakannoConflict
untuk memastikan kode lain yang digunakan$
tidak rusak.sumber
Kesalahan itu berarti bahwa jQuery belum dimuat di halaman. Menggunakan
$(document).ready(...)
atau varian apa pun tidak akan ada gunanya, seperti$
fungsi jQuery.Penggunaan
window.onload
harus bekerja di sini. Perhatikan bahwa hanya satu fungsi yang dapat ditetapkanwindow.onload
. Untuk menghindari kehilangan logika muatan asli, Anda dapat menghias fungsi aslinya seperti:Ini akan menjalankan fungsi yang semula ditugaskan
window.onload
, dan kemudian akan mengeksekusi// YOUR JQUERY
.Lihat https://en.wikipedia.org/wiki/Decorator_pattern untuk detail lebih lanjut tentang pola dekorator.
sumber
Saya menggunakan Url.Content dan tidak pernah memiliki masalah.
sumber
Dalam solusinya disebutkan - "Satu hal terakhir untuk memeriksa adalah memastikan bahwa Anda tidak memuat plugin apa pun sebelum Anda memuat jQuery. Plugin memperpanjang objek" $ ", jadi jika Anda memuat plugin sebelum memuat inti jQuery, maka Anda akan mendapatkan kesalahan yang Anda jelaskan. "
Untuk menghindari ini -
Banyak pustaka JavaScript menggunakan $ sebagai fungsi atau nama variabel, seperti halnya jQuery. Dalam kasus jQuery, $ hanyalah alias untuk jQuery, jadi semua fungsionalitas tersedia tanpa menggunakan $. Jika kita perlu menggunakan pustaka JavaScript lain bersama jQuery, kita dapat mengembalikan kontrol $ kembali ke pustaka lain dengan panggilan ke $ .noConflict ():
sumber
Saya pernah mengalami masalah ini tanpa alasan yang jelas. Itu terjadi secara lokal ketika saya menjalankan melalui server pengembangan aspnet. Itu telah bekerja dan saya mengembalikan semuanya ke keadaan di mana sebelumnya telah bekerja dan tetap tidak berhasil. Saya mencari di chrome debugger dan jquery-1.7.1.min.js telah dimuat tanpa masalah. Itu semua sangat membingungkan. Saya masih tidak tahu apa masalahnya selain menutup browser, menutup server pengembangan dan kemudian mencoba lagi mengatasinya.
sumber
Cukup tempatkan url jquery di bagian atas kode jquery Anda
seperti ini--
sumber
Saya memiliki masalah yang sama dan itu karena referensi saya ke jQuery.js tidak ada dalam tag. Begitu saya beralih itu, semuanya mulai bekerja.
Anthony
sumber
Periksa jalur yang tepat dari file jquery Anda disertakan.
<script src="assets/plugins/jquery/jquery.min.js"></script>
jika Anda menambahkan ini di bagian bawah halaman Anda, mohon semua panggil fungsi JS di bawah deklarasi ini.
Periksa menggunakan tes kode ini,
Perdamaian!
sumber
Kami memiliki masalah yang sama .... tetapi tidak sengaja saya memeriksa properti folder dan mengatur sesuatu ...
Anda harus memeriksa properti masing-masing folder yang Anda akses ..
Saya harap ini solusinya ......
sumber
Saat menggunakan jQuery di asp.net, jika Anda menggunakan halaman master dan Anda memuat file sumber jquery di sana, pastikan Anda memiliki header contentplaceholder setelah semua referensi skrip jquery.
Saya punya masalah di mana halaman mana pun yang menggunakan halaman master akan mengembalikan '$ tidak didefinisikan' hanya karena urutan yang salah membuat kode sisi klien dijalankan sebelum objek jquery dibuat. Jadi, pastikan Anda memiliki:
Dengan begitu kode akan berjalan secara berurutan dan Anda akan dapat menjalankan kode jQuery di halaman anak.
sumber
Dalam kasus saya, saya menunjuk JQuery yang dihosting Google. Itu dimasukkan dengan benar, tetapi saya berada di halaman HTTPS dan memanggilnya melalui HTTP. Setelah saya memperbaiki masalah (atau memperbolehkan konten yang tidak aman), masalah tersebut langsung muncul.
sumber
Saya mengalami masalah yang sama dan tidak tahu apa penyebabnya. Baru-baru ini saya mengonversi file HTML saya dari Jepang ke UTF-8, tetapi saya tidak melakukan apa pun dengan file skrip. Entah bagaimana jquery-1.10.2.min.js menjadi rusak dalam proses ini (saya masih tidak tahu bagaimana). Mengganti jquery-1.10.2.min.js dengan yang asli memperbaikinya.
sumber
tampaknya jika Anda menemukan file jquery.js Anda di bawah folder yang sama atau di beberapa subfolder di mana file html Anda berada, masalah Firebug diselesaikan. misalnya jika html Anda berada di bawah C: / folder1 /, maka file js Anda harus berada di suatu tempat di bawah C: / folder1 / (atau C: / folder1 / folder2 dll) juga dan ditangani sesuai dalam dokumen html. semoga ini membantu.
sumber
Saya memiliki masalah yang sama dan tidak ada kasus yang menyelesaikan masalah saya. Satu-satunya hal yang berfungsi untuk saya, diletakkan di file Site.master, yang berikutnya:
Dengan src = "<% = ResolveUrl (" ") ... beban jQuery di Halaman Konten sudah benar.
sumber
Saya memiliki masalah yang sangat mirip. Dalam aplikasi C # MVC saya, JQuery tidak dikenali. Saya perlu memindahkan @ Scripts.Render ("~ / bundles / jquery") dari bagian bawah file _Layout.cshtml saya ke kepala bagian. Juga pastikan Anda telah mengambil Jquery sebagai paket Nuget jika Anda menggunakan visual studio!
sumber
Ada cara untuk membuatnya secara otomatis memuat javascript sebelum sisa kode berjalan.
Pergilah ke Views \ Shared_Layout.html dan tambahkan yang berikut ini
sumber
jika
script
tag memilikidefer
atribut itu menunjukkan kesalahandan harus menghapus atribut
defer
dariscript
tagsumber
Ini adalah masalah umum untuk menyelesaikan ini, Anda harus memeriksa beberapa poin
Rincian lengkap diberikan di blog ini, klik di sini
sumber