Untuk beberapa alasan, saat menggunakan AJAX (dengan file kode dasboraplikasi yang dikembangkan) browser hanya berhenti mengunggah dan mengembalikan kode status 0
. Mengapa ini terjadi?
ajax
http-status-codes
tarnfeld
sumber
sumber
<form onsubmit="return false;">
e.preventDefault();
Menurut pengalaman saya, Anda akan melihat status 0 ketika:
sumber
Masalah yang sama di sini saat menggunakan
<button onclick="">submit</button>
. Kemudian diselesaikan dengan menggunakan<input type="button" onclick="">
sumber
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.
sumber
Penting untuk dicatat, bahwa panggilan ajax bisa gagal bahkan dalam sesi yang ditentukan oleh cookie dengan domain tertentu yang diawali dengan www. Ketika Anda kemudian memanggil script php Anda misalnya tanpa www. awalan di url, panggilan akan gagal dan sebaliknya, juga.
sumber
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.sumber
<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.
sumber
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. :)
sumber
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})
, mengembalikannew window.XMLHttpRequest();
alih-alih menyelesaikan masalahSaya memiliki masalah yang sama, dan itu terkait dengan blok XSS (cross site scripting) oleh browser. Saya berhasil membuatnya bekerja menggunakan server.
Lihat di: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0
sumber
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!
sumber
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.
sumber
Dalam kasus saya, ini disebabkan oleh menjalankan server django saya di bawah
http://127.0.0.1:8000/
tetapi mengirim panggilan ajax kehttp://localhost:8000/
. Meskipun Anda mengharapkan mereka untuk memetakan ke alamat yang sama, mereka tidak begitu memastikan Anda tidak mengirim permintaan Anda ke localhost.sumber
Dalam kasus kami, link halaman diubah dari https menjadi http . Meskipun pengguna sudah masuk, mereka dicegah memuat dengan AJAX.
sumber
Dalam kasus saya, pengaturan
url: ''
dalam pengaturan ajax akan menghasilkan kode status 0 di ie8 .. Sepertinya ie tidak mentolerir pengaturan seperti itu.sumber
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.
sumber
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.
sumber
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'.
sumber
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.
sumber
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.
sumber
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.
sumber