Untuk beberapa alasan, saat menggunakan AJAX (dengan file kode dasboraplikasi yang dikembangkan) browser hanya berhenti mengunggah dan mengembalikan kode status 0
. Mengapa ini terjadi?
Untuk beberapa alasan, saat menggunakan AJAX (dengan file kode dasboraplikasi yang dikembangkan) browser hanya berhenti mengunggah dan mengembalikan kode status 0
. Mengapa ini terjadi?
Jawaban:
Kasus lain:
Dimungkinkan untuk mendapatkan kode status 0
jika Anda telah mengirim panggilan AJAX dan penyegaran browser dipicu sebelum mendapatkan respons AJAX . Panggilan AJAX akan dibatalkan dan Anda akan mendapatkan status ini.
<form onsubmit="return false;">
e.preventDefault();
Menurut pengalaman saya, Anda akan melihat status 0 ketika:
Masalah yang sama di sini saat menggunakan <button onclick="">submit</button>
. Kemudian diselesaikan dengan menggunakan<input type="button" onclick="">
Kode status 0 berarti url yang diminta tidak dapat dijangkau. Dengan mengubah http: // sesuatu / sesuatu menjadi https: // sesuatu / sesuatu berhasil untuk saya. IE melontarkan kesalahan yang mengatakan "izin ditolak" ketika kode status 0, browser lain tidak.
Artikel ini membantu saya. Saya mengirimkan formulir melalui AJAX dan lupa untuk menggunakan return false
(setelah permintaan ajax saya) yang menyebabkan pengiriman formulir klasik tetapi anehnya itu tidak selesai.
<form onsubmit="return false;">
berhasil.
Karena ini muncul ketika Anda google ajax status 0 Saya ingin meninggalkan beberapa tip yang hanya memakan waktu berjam-jam ... Saya menggunakan ajax untuk memanggil layanan PHP yang kebetulan Phil's REST_Controller untuk Codeigniter (tidak yakin apakah ini memiliki ada hubungannya dengan itu atau tidak) dan terus mendapatkan status 0, readystate 0 dan itu membuatku gila. Saya sedang men-debugnya dan memperhatikan ketika saya menggema dan kembali alih-alih keluar dari pesan, saya akan berhasil. Akhirnya saya mematikan debugging dan mencoba dan berhasil. Tampaknya debugger xDebug dengan PHP entah bagaimana memodifikasi responsnya. Jika Anda menggunakan debugger PHP, coba nonaktifkan untuk melihat apakah itu membantu.
Saya menemukan kasus lain di mana jquery memberi Anda kode status 0 - jika karena alasan tertentu XMLHttpRequest tidak ditentukan, Anda akan mendapatkan kesalahan ini.
Jelas ini biasanya tidak akan terjadi di web, tetapi bug dalam build firefox malam menyebabkan ini muncul di add-on yang saya tulis. :)
jQuery.ajax()
objek XHR. Permintaan itu bahkan tidak dibuat pada panggilan AJAX, masih mendapatkan f.open bukan fungsi dan kode status 0. Disebabkan oleh: Saya mengembalikan $.ajaxSettings.xhr
objek dari $.ajaxSetup({xhr})
, mengembalikan new window.XMLHttpRequest();
alih-alih menyelesaikan masalah
Saya memiliki masalah yang sama, dan itu terkait dengan blok XSS (cross site scripting) oleh browser. Saya berhasil membuatnya bekerja menggunakan server.
Pengiriman formulir "tidak disengaja" adalah masalah yang saya alami. Saya baru saja menghapus tag FORM sama sekali dan itu tampaknya memperbaiki masalah. Terima kasih semuanya!
Kami memiliki masalah serupa - kode status 0 pada panggilan ajax jquery - dan kami butuh waktu seharian untuk mendiagnosisnya. Karena belum ada yang menyebutkan alasan ini, saya pikir saya akan berbagi.
Dalam kasus kami, masalahnya adalah server HTTP mogok. Beberapa bug di PHP meniup Apache, jadi di akhir klien terlihat seperti ini:
mirek@toccata:~$ telnet our.server.com 80
Trying 180.153.xxx.xxx...
Connected to our.server.com.
Escape character is '^]'.
GET /test.php HTTP/1.0
Host: our.server.com
Connection closed by foreign host.
mirek@toccata:~$
di mana test.php berisi kode yang rusak. Tidak ada data yang dikembalikan dari server (bahkan header) => panggilan ajax dibatalkan dengan status 0.
Dalam kasus saya, ini disebabkan oleh menjalankan server django saya di bawah http://127.0.0.1:8000/
tetapi mengirim panggilan ajax ke http://localhost:8000/
. Meskipun Anda mengharapkan mereka untuk memetakan ke alamat yang sama, mereka tidak begitu memastikan Anda tidak mengirim permintaan Anda ke localhost.
Dalam kasus kami, link halaman diubah dari https menjadi http . Meskipun pengguna sudah masuk, mereka dicegah memuat dengan AJAX.
Bagi saya, masalahnya disebabkan oleh perusahaan hosting (GoDaddy) yang memperlakukan operasi POST yang memiliki data respons substansial (lebih dari puluhan kilobyte) sebagai semacam ancaman keamanan. Jika lebih dari 6 hal ini terjadi dalam satu menit, host menolak untuk mengeksekusi kode PHP yang merespons permintaan POST selama satu menit berikutnya. Saya tidak sepenuhnya yakin apa yang dilakukan oleh host, tetapi saya melihat, dengan tcpdump, paket reset TCP datang sebagai respons terhadap permintaan POST dari browser. Hal ini menyebabkan kode status http yang dikembalikan dalam objek jqXHR menjadi 0.
Mengubah operasi dari POST ke GET memperbaiki masalah. Tidak jelas mengapa GoDaddy memberlakukan batasan ini, tetapi mengubah kode lebih mudah daripada mengubah host.
Saya rasa saya tahu apa yang menyebabkan kesalahan ini.
Di google chrome terdapat fitur built-in untuk mencegah serangan ddos untuk ekstensi google chrome.
Ketika permintaan ajax terus menerus mengembalikan 500+ kesalahan status, itu mulai membatasi permintaan.
Oleh karena itu dimungkinkan untuk menerima status 0 pada permintaan berikut.
Dalam upaya untuk memenangkan hadiah karena alasan paling bodoh untuk masalah yang dijelaskan.
Lupa menelepon
xmlhttp.send(); //yes, you need this pivotal line!
Ya, saya masih mendapatkan pengembalian status nol dari panggilan 'terbuka'.
Dalam kasus saya, saya mendapatkan ini tetapi hanya di Safari Mobile. Masalahnya adalah saya menggunakan URL lengkap ( http://example.com/whatever.php ) daripada yang relatif (terserah.php). Namun ini tidak masuk akal, ini bukan masalah XSS karena situs saya dihosting di http://example.com . Saya kira Safari melihat bagian http dan secara otomatis menandainya sebagai permintaan yang tidak aman tanpa memeriksa sisa URL.
Dalam pemecahan masalah saya, saya menemukan AJAX xmlhttpRequest.status == 0 ini bisa berarti panggilan klien BELUM mencapai server, tetapi gagal karena masalah di sisi klien. Jika responsnya dari server, maka statusnya harus berupa kode Respons HTTP 1xx / 2xx / 3xx / 4xx / 5xx itu. Untuk selanjutnya, pemecahan masalah harus fokus pada masalah KLIEN, dan mungkin koneksi jaringan internet terputus atau salah satu yang dijelaskan oleh @Langdon di atas.
Amati Konsol browser saat membuat permintaan, jika Anda melihat "Kebijakan Asal yang Sama melarang membaca sumber daya jarak jauh di http ajax ..... alasan: header cors 'access-control-allow-origin' hilang" maka Anda perlu tambahkan "Access-Control-Allow-Origin" di header tanggapan. exa: di java Anda dapat menyetel ini seperti response.setHeader ("Access-Control-Allow-Origin", "*") di mana responsnya adalah HttpServletResponse.