Yanıtlar:
Başka bir dava:
Bir durum kodu almak mümkün olabilir 0
sen varsa AJAX yanıtı almadan önce bir AJAX arama ve tarayıcı bir yenileme gönderilen tetiklendi . AJAX çağrısı iptal edilecek ve bu durumu alacaksınız.
<form onsubmit="return false;">
e.preventDefault();
Deneyimlerime göre, şu durumlarda 0 durumunu göreceksiniz:
Aynı sorun kullanırken <button onclick="">submit</button>
. Sonra kullanarak çözüldü<input type="button" onclick="">
Durum kodu 0, istenen URL'ye erişilemediği anlamına gelir. Değiştirerek // şey / bir şey: http için https: // şey / şey benim için çalıştı. Durum kodu 0 olduğunda IE "izin reddedildi" hatası verir, diğer tarayıcılar bunu yapmaz.
Bu makale bana yardımcı oldu. AJAX aracılığıyla form gönderiyordum ve return false
klasik form gönderilmesine yol açan (ajax isteğimden sonra) kullanmayı unuttum, ancak garip bir şekilde tamamlanmadı.
<form onsubmit="return false;">
hile yaptı.
Çünkü google ajax durumu 0 ortaya çıktığında çünkü ben sadece boşa zaman saatler sürdü bazı ipucu bırakmak istedim ... Phil Codeigniter için REST_Controller oldu bir PHP hizmeti aramak için ajax kullanıyordum (bu olup olmadığını emin değilim onunla ilgisi olsun ya da olmasın) ve durum 0, readystate 0 almaya devam etti ve beni deli ediyordu. Ben hata ayıklama ve ne zaman yankı ve dönmek yerine başarı elde ediyorum mesaj çıkmak fark ettim. Sonunda hata ayıklamayı kapattım ve denedim ve işe yaradı. PHP ile xDebug hata ayıklayıcı bir şekilde yanıtı değiştiriyor gibi görünüyor. Bir PHP hata ayıklayıcı kullanıyorsanız, yardımcı olup olmadığını görmek için kapatmayı deneyin.
JQuery size durum kodu 0 veren başka bir durum buldum - XMLHttpRequest herhangi bir nedenle tanımlanmamışsa, bu hatayı alırsınız.
Açıkçası bu normalde web'de olmayacak, ancak her gece firefox derlemesindeki bir hata bunun yazdığım bir eklentide kırpılmasına neden oldu. :)
jQuery.ajax()
XHR nesnesiyle ilgili bir sorunum vardı . İstek AJAX çağrısında bile oluşturulmadı, yine de f.open almak bir işlev ve durum kodu 0 değil. Neden: $.ajaxSettings.xhr
Nesneyi $.ajaxSetup({xhr})
döndürüyordum, new window.XMLHttpRequest();
bunun yerine geri dönüyorum sorunu
Aynı sorunu yaşadım ve tarayıcı tarafından XSS (siteler arası komut dosyası oluşturma) bloğu ile ilgiliydi. Bir sunucu kullanarak çalışmasını başardım.
Şuna bir göz atın: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0
"Kazara" form gönderme tam olarak yaşadığım sorun oldu. Sadece FORM etiketlerini tamamen kaldırdım ve bu sorunu çözüyor gibi görünüyor. Herkese teşekkürler!
Benzer bir sorun yaşadık - jquery ajax çağrısında durum kodu 0 - ve bunu teşhis etmek bizi bütün gün aldı. Henüz kimse bu sebepten bahsetmediği için paylaşacağımı düşündüm.
Bizim durumumuzda sorun HTTP sunucusu çökmesiydi. PHP'deki bazı hatalar Apache'yi esiyordu, bu yüzden istemci sonunda şöyle görünüyordu:
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:~$
Burada test.php kilitlenen kodu içeriyordu. Sunucudan hiçbir veri döndürülmedi (başlıklar bile değil) => ajax çağrısı 0 durumuyla iptal edildi.
Benim durumumda, django sunucumu altında çalıştırmak http://127.0.0.1:8000/
ama ajax çağrısını göndermek neden oldu http://localhost:8000/
. Aynı adresle eşlemelerini bekleseniz de, isteklerinizi localhost'a göndermediğinizden emin değiller.
Bizim durumumuzda, sayfa bağlantısı değiştirildi https için http . Kullanıcılar giriş yapmış olsalar da AJAX ile yüklemeleri engellendi.
Benim için sorun, ev sahibi şirket (Godaddy), önemli tepki verisi olan (onlarca kilobayttan fazla) POST işlemlerini bir tür güvenlik tehdidi olarak ele aldı. Bunlardan 6'sından fazlası bir dakika içinde meydana gelirse, ana bilgisayar sonraki dakika boyunca POST isteğine yanıt veren PHP kodunu yürütmeyi reddetti. Ana bilgisayar yerine ne yaptığını tam olarak emin değilim, ama tcpdump ile tarayıcıdan bir POST isteğine yanıt olarak gelen bir TCP sıfırlama paketi gördüm. Bu, bir jqXHR nesnesine döndürülen http durum kodunun 0 olmasına neden oldu.
İşlemleri POST'tan GET'e değiştirmek sorunu çözdü. Godaddy'nin neden bu limiti uyguladığı açık değil, ancak kodu değiştirmek ana bilgisayarı değiştirmekten daha kolaydı.
Sanırım bu hataya neyin sebep olabileceğini biliyorum.
Google Chrome'da, Google Chrome uzantılarına yönelik ddos saldırılarını önlemek için yerleşik bir özellik vardır.
Ajax istekleri sürekli 500+ durum hatası döndürdüğünde, istekleri azaltmaya başlar.
Bu nedenle, aşağıdaki istekler üzerine durum 0 almak mümkündür.
Açıklanan problem için en aptal nedenden dolayı ödülü kazanmak için.
Telefon etmeyi unutmak
xmlhttp.send(); //yes, you need this pivotal line!
Evet, hala 'open' çağrısından sıfır durum döndürme alıyordum.
Benim durumumda, bunu sadece Safari Mobile'da alıyordum. Sorun göreli bir URL (whatever.php) yerine tam URL ( http://example.com/whatever.php ) kullanıyordu. Bu bir anlam ifade etmiyor, sitem http : //example.com'da barındırıldığı için XSS sorunu olamaz . Safari http bölümüne bakar ve URL'nin geri kalanını denetlemeden otomatik olarak güvenli olmayan bir istek olarak işaretler.
Sorun gidermemde, bu AJAX xmlhttpRequest.status == 0, istemci çağrısının henüz sunucuya ulaşmadığı, ancak istemci tarafında sorun nedeniyle başarısız olduğu anlamına gelebileceğini buldum. Yanıt sunucudan geliyorsa, durum ya 1xx / 2xx / 3xx / 4xx / 5xx HTTP Yanıt kodu olmalıdır. Bundan sonra, sorun giderme MÜŞTERİ sorununa odaklanacaktır ve internet ağı bağlantısı kesilmiş veya yukarıdaki @ Langdon tarafından açıklananlardan biri olabilir.
"Aynı Köken Politikası http ajax'ta uzak kaynak okumaya izin vermiyor" mesajını görüyorsanız, istek yaparken tarayıcı Konsolu'nu gözlemleyin. yanıt başlığına "Access-Control-Allow-Origin" ekleyin. exa: java bunu yanıt HttpServletResponse olduğu response.setHeader ("Access-Control-Allow-Origin", "*") gibi ayarlayabilirsiniz.