Saya telah menambahkan log ke konsol untuk memeriksa status variabel yang berbeda tanpa menggunakan debugger Firefox.
Namun, di banyak tempat di mana saya menambahkan file console.log
saya main.js
, saya menerima kesalahan berikut alih-alih pesan tulisan tangan kecil yang indah untuk diri saya sendiri:
Sinkronisasi XMLHttpRequest pada utas utama sudah usang karena efeknya yang merugikan bagi pengalaman pengguna akhir. Untuk bantuan lebih lanjut http://xhr.spec.whatwg.org/
Alternatif atau pembungkus apa yang console.log
dapat saya tambahkan ke penggunaan kode saya yang tidak akan menyebabkan kesalahan ini?
Apakah saya "salah melakukannya"?
jquery
debugging
firefox
backbone.js
console.log
Nathan Basanese
sumber
sumber
<script>$.ajaxPrefilter(function( options, originalOptions, jqXHR ) { options.async = true; });</script>
ini akan menghilangkan peringatan. Anda dapat melihat di sini untuk masalah yang sama.Jawaban:
Ini terjadi pada saya ketika saya malas dan menyertakan tag skrip sebagai bagian dari konten yang dikembalikan. Dengan demikian:
Konten HTML Sebagian:
Tampaknya, setidaknya dalam kasus saya, bahwa jika Anda mengembalikan konten HTML seperti itu melalui xhr, Anda akan menyebabkan jQuery melakukan panggilan untuk mendapatkan skrip itu. Panggilan itu terjadi dengan flag async false karena menganggap Anda memerlukan skrip untuk melanjutkan memuat.
Dalam situasi seperti ini, Anda akan lebih baik dilayani dengan melihat ke dalam kerangka kerja sejenis dan hanya mengembalikan objek JSON, atau tergantung pada backend Anda dan templating Anda bisa mengubah cara Anda memuat skrip Anda.
Anda juga bisa menggunakan jQuery's
getScript()
untuk mengambil skrip yang relevan. Ini biola, Ini hanya salinan langsung dari contoh jQuery, tapi saya tidak melihat peringatan yang dilemparkan ketika skrip dimuat seperti itu.Contoh
http://jsfiddle.net/49tkL0qd/
sumber
<script>
seperti yang Anda katakan dalam panggilan balik panggilan asinkron ajax. Panggilan ajax saya asinkron namun dalam callback saya membuat$('#object').html(data)
datahtml
dengan<script>
dan ketika baris ini dijalankan kesalahan muncul dijs console
. +1 !!! Terima kasih:)
.Pesan peringatan DAPAT MENJADI karena permintaan XMLHttpRequest dalam utas utama dengan flag async disetel ke false.
https://xhr.spec.whatwg.org/#synchronous-flag :
Arah di masa depan adalah hanya mengizinkan XMLHttpRequests di utas pekerja. Pesan itu dimaksudkan sebagai peringatan untuk efek itu.
sumber
console.log
mengirimkan peringatan ini?Saya juga menghadapi masalah yang sama tetapi dapat memperbaikinya dengan meletakkan async: true. Saya tahu ini secara default benar tetapi berfungsi ketika saya menulisnya secara eksplisit
sumber
Debugger hidup Visual Studio 2015/2017 menyuntikkan kode yang berisi panggilan usang.
sumber
Kadang-kadang perlu ajax memuat skrip tetapi menunda dokumen siap sampai setelah skrip dimuat.
jQuery mendukung ini dengan
holdReady()
fungsinya.Contoh penggunaan:
Pemuatan skrip yang sebenarnya adalah asinkron ( tidak ada kesalahan ), tetapi efeknya sinkron jika seluruh JavaScript Anda berjalan setelah dokumen siap .
Dokumentasi:
https://api.jquery.com/jquery.holdready
PEMBARUAN 7 Januari 2019
Dari JQMIGRATE :
sumber
Untuk menghindari peringatan ini, jangan gunakan:
dalam panggilan $ .ajax () Anda. Ini adalah satu-satunya fitur XMLHttpRequest yang sudah usang.
Standarnya adalah
jQuery telah mencabut XMLHTTPRequest sinkron
sumber
@Webgr sebagian jawaban sebenarnya membantu saya men-debug peringatan ini @ konsol log, malu bagian lain dari jawaban itu membawa banyak downvotes :(
Ngomong-ngomong, inilah cara saya mengetahui apa penyebab peringatan ini dalam kasus saya:
Dalam kasus saya, plugin lain memuat 2 perpustakaan .js setelah setiap panggilan ajax, yang sama sekali tidak diperlukan atau diperlukan. Menonaktifkan plugin jahat menghapus peringatan dari log. Dari titik itu, Anda dapat mencoba untuk memperbaiki masalah sendiri (misalnya membatasi memuat skrip ke halaman atau acara tertentu - ini terlalu spesifik untuk jawaban di sini) atau hubungi pengembang plugin pihak ke-3 untuk menyelesaikannya.
Semoga ini bisa membantu seseorang.
sumber
Saya telah melihat jawaban yang mengesankan. Saya pikir Dia harus memberikan kode yang memberinya masalah. Diberikan contoh di bawah ini, Jika Anda memiliki skrip untuk ditautkan ke jquery di page.php maka Anda mendapatkan pemberitahuan itu.
sumber
Saya mendapatkan peringatan seperti itu dalam kasus berikut:
1) file1 yang berisi
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
. Halaman memiliki kolom input. Saya memasukkan beberapa nilai di kolom input dan klik tombol. Jquery mengirimkan input ke file php eksternal.2) file php eksternal juga mengandung jquery dan dalam file php eksternal saya juga disertakan
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
. Karena jika ini saya mendapat peringatan.Dihapus
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
dari file php eksternal dan berfungsi tanpa peringatan.Seperti yang saya pahami tentang memuat file pertama (file1), saya memuat
jquery-1.10.2.js
dan karena halaman tidak memuat ulang (mengirimkan data ke file php eksternal menggunakan jquery$.post
), makajquery-1.10.2.js
terus ada. Jadi tidak perlu lagi memuatnya.sumber
Saya mendapatkan pengecualian ini ketika saya menetapkan url di kueri seperti "example.com/files/text.txt". Saya telah mengubah url menjadi " http://example.com/files/text.txt " dan pengecualian ini hilang.
sumber
Dan saya mendapatkan pengecualian ini untuk memasukkan satu skrip can.js ke dalam skrip lain, misalnya,
sumber
Dalam aplikasi MVC, saya mendapat peringatan ini karena saya membuka Kendo Window dengan metode yang mengembalikan View (), bukan PartialView (). Tampilan () mencoba membuka kembali semua skrip halaman.
sumber
Itu terjadi pada saya di ZF2. Saya mencoba memuat konten Modal tetapi saya lupa menonaktifkan tata letak sebelumnya.
Begitu:
sumber
Seperti @Nycen, saya juga mendapatkan kesalahan ini karena tautan ke Cloudfare. Milik saya adalah untuk plugin Select2 .
untuk memperbaikinya saya baru saja dihapus
dan kesalahan itu hilang.
sumber
press F12
F1
."Don't show chrome Data Saver warning"
- setel kotak centang ini."Log XMLHTTPRequest"
- setel kotak centang ini juga.Nikmati
sumber
Ini diselesaikan dalam kasus saya.
Jawaban ini dimasukkan dalam tautan ini
/programming/28322636/synchronous-xmlhttprequest-warning-and-script
sumber
Dalam kasus saya ini disebabkan oleh skrip flexie yang merupakan bagian dari aplikasi "Seleksi CDNJS" yang ditawarkan oleh Cloudflare .
Menurut Cloudflare "Aplikasi ini tidak digunakan lagi pada bulan Maret 2015". Saya mematikannya dan pesan itu langsung menghilang.
Anda dapat mengakses aplikasi dengan mengunjungi https://www.cloudflare.com/a/cloudflare-apps/yourdomain.com
NB: ini adalah salinan jawaban saya di utas ini Synchronous XMLHttpRequest warning and <script> (Saya mengunjungi keduanya ketika mencari solusi)
sumber
Saya memperbaikinya dengan langkah-langkah di bawah ini:
sumber
Dalam kasus khusus saya, saya membuat sebagian Rails tanpa
render layout: false
yang rendering ulang seluruh tata letak, termasuk semua skrip dalam<head>
tag. Menambahkanrender layout: false
ke tindakan pengontrol memperbaiki masalah.sumber
Bagi saya, masalahnya adalah bahwa dalam permintaan OK, saya mengharapkan respons ajax menjadi string HTML yang diformat dengan baik seperti tabel, tetapi dalam kasus ini, server mengalami masalah dengan permintaan, mengarahkan ke halaman kesalahan, dan karena itu mengembalikan kembali kode HTML dari halaman kesalahan (yang memiliki
<script
tag di suatu tempat. Saya menghibur login respon ajax dan saat itulah saya menyadari itu bukan apa yang saya harapkan, kemudian mulai melakukan debugging saya.sumber
Pertanyaannya muncul pada tahun 2014 dan ini tahun 2019 jadi saya kira itu baik untuk mencari opsi yang lebih baik.
Anda cukup menggunakan
fetch
api dalam Javascript yang memberi Anda lebih banyak fleksibilitas.misalnya, lihat kode ini
sumber