2016-04-05 10 views
1

Bazı HTTPS sayfalarında çalışan Chrome uzantımda bir içerik komut dosyası var. Bir HTTP sayfası (bir arka plan komut dosyası aracılığıyla) için bir POST isteği göndermeye çalışıyor, bu, kurduğum bir API için bir yoldur. JSON verilerini göndermeye çalışıyorum. Ancak ben hazır durum 4 olsa da, durum 0 alıyorum. Ben aynı yazıyı gerçekleştirmek için Postman kullandım ve çalıştı. Bu bana bir HTTPS protokolü sorunu olduğuna inanıyorum, ancak aynı arka plan komut dosyasında bir HTTP sayfasında bir GET gerçekleştiriyorum ve iyi çalışıyor. Sorun ne olabilir? İşte benim posta kodum:Neden XMLHttpRequest'im readystate 4 ama status 0 var?

Teşekkürler!

GÜNCELLEME: No 'Erişim Kontrolü-İzin ver: Ben arka plan senaryoyu hata ayıklamak için krom geliştirici araçları kullanılır ve uçuş öncesi isteğe yanıt erişim kontrollerine geçemezse" idi hatası, bulunan

Kökenin üstbilgisi istenen kaynakta bulunur. " Arka plan komut dosyası hatalarının ana konsola yazdırılmadığını tahmin ediyorum.

GÜNCELLEME: Ben manifest'te izinler alanına kadar ben gönderim site eklemek zorunda

. Şuan çalışıyor.

+0

0 durum kodu gibi bir şey yok.Lütfen https://developer.mozilla.org/en-US/docs/Web/HTTP/Response_codes adresine bakın –

+0

İsterseniz, onreadystatechange işlevine girdiğimde ve xhr.status'u işaretlediğimde 0'dır. – gtsioni

+0

0 durumu genellikle, isteğin [kasıtlı olarak] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#abort()) veya nedeniyle iptal edildiği anlamına gelir. kesintiye (örneğin, sayfanın yüklenmesine neden olan navigasyon). İstek, "tam" olduğu gibi olacak (yani, readyState === 4'), ancak farklı bir durum ayarlamak için hiç bir yanıt alınmadı. –

cevap

0

4'ün readyState değeri, işlemin başarıyla tamamlandığı anlamına gelir veya başarısız oldu. Durum özelliği 0 olarak başlatılır ve bir hata oluşursa 0 olarak kalır. xhr.onerror özelliğine bir olay işleyicisi atayım ve bahse girerim bu işleyici yangını görürsünüz. Maalesef, hata olayı, hataya neden olan şey hakkında herhangi bir yararlı bilgi vermez.

Hatanın nedenini öğrenmek için Chrome'da bulunan hata ayıklama araçlarını kullanırdım. Menü => Diğer araçlar => Geliştirici Araçları. Ardından "Ağ" sekmesine gidin. Burada web sayfanızın yaptığı tüm HTTP isteklerini görebilirsiniz. Orada herhangi bir hata ile ilgili daha iyi detaylar gösterecektir.

+0

Bu konuda deneyimsizim ve bana bağlandığınız sayfayı yorumlamakta zorlanıyorum. Çalışan bir hata işleyici nasıl görünebilir? Teşekkürler! – gtsioni

+0

Bir onerror işlev işleyicisi kurabildim ve event.detail tanımlanmamış. – gtsioni