andrisp Posted May 2, 2007 Report Posted May 2, 2007 (edited) Tātad ir problēma: reizēm (diezgan regulāri) skripts nomirst ar kļūdu "The download of the specified resource has failed" (nevis ar XHR statusu, bet gan kā skripta kļūda). Notiek tas tikai uz IE6 (uz citām versijām nemēģināju). Izmēģināju arī uz dažādiem kompjiem, tā kā tas nav tikai mans gļukainais IE. Iekš FF viss ok. Skripta būtība: Nosubmitējot formu, tiek izveidots xhr objekts, kas mēģina pieprasīt ar POST (ar GET problēmu nav) metodi failu. Parasti viss notiek ok, bet reizēm skripts nomirst pie xhr objekta metodes send. Ā un jā, lapa tiek ieladēta caur SSL. Sākumā xhr pieprasījumus veidoju ar relatīvu URL. Tipa nepieprasīju https://www.example.com/skripts.php, bet gan vienkārši skripts.php. Tad gļukoja daudz biežāk. Pārveidoju uz absolute URL un it kā nedaudz mazāk tagad gļuko, bet vienalga gļuko. http://paste.php.lv/5502 Tātad: vai kāds ir ar kaut ko tādu saskāries ? Kādi risinājumi ? Var būt kādi padomi attiecībā uz pašu skriptu, kas iespējams novērstu kļūdu ? Edited May 2, 2007 by andrisp
andrisp Posted May 2, 2007 Author Report Posted May 2, 2007 (edited) Diezvai. Nosūtīti tiek vienkārši POST dati - divi pavisam nelieli mainīgie. Atgriezts arī tiek pavisam vienkārš json, apt šāds: {"status":"1"}. Bet vispār kļūda notiek pie XHR send metodes izsaukšanas. Debugojot HTTP trafiku noskaidroju, ka reaals HTTP pieprasījums pat nepaspēj notikt. Aizmirsu arī pateikt, ka reizēm IE pat sasalt uz kādu pusminūti PĒC tam, kad nospiežu Ok tam kļūdas paziņojumam. Edited May 2, 2007 by andrisp
marrtins Posted May 2, 2007 Report Posted May 2, 2007 pamēģini vispirms xhrObj = new ActiveXObject("Microsoft.XMLHTTP"); t.i. apmainīt vietām ar xhrObj = new ActiveXObject("Msxml2.XMLHTTP");
black Posted May 2, 2007 Report Posted May 2, 2007 (edited) Varbūt IE nepatīk, ka Tu mēģini nolasīt rezultātu ("alert(xhrObj.responseText);") vēl pirms tas tiek atgriezts? Tieši tur jau tas asinhronums (no Ajax) arī izpaužas - rezultāts var atnākt arī vēlāk. Pirms "xhrObj.send" ieliec kaut ko apmēram šādu: var me = this; xhrObj.onreadystatechange = function() { if(me.xhrObj.readyState == 4) { if(me.xhrObj.responseText) { alert(xhrObj.responseText); } } }; Edited May 2, 2007 by black
andrisp Posted May 2, 2007 Author Report Posted May 2, 2007 Arī gļuko. Kļūdas gadijumā xhr.status ir 12030 "ERROR_INTERNET_CONNECTION_ABORTED The connection with the server has been terminated." Kļūdas atšifrējums no http://support.microsoft.com/kb/193625
bubu Posted May 2, 2007 Report Posted May 2, 2007 Nav varbūt tā, ka Content-Length no php puses tiek padots neatbilstoši īstajam nosūtītajam saturam? Katrā ziņā man nekad nav nācies ko šādu redzēt.
andrisp Posted May 2, 2007 Author Report Posted May 2, 2007 Tā. Sataisīju visu atpakaļ uz sinhrono un skatos, ka tagad, kad nogļuko, tad xhr.status satur 12152 jeb "ERROR_HTTP_INVALID_SERVER_RESPONSE The server response could not be parsed" un xhr.getAllResponseHeaders() ir tukšs.
andrisp Posted May 2, 2007 Author Report Posted May 2, 2007 (edited) Katrā ziņā - nākamais solis ir testēt (lasi-atjaunot vai nomainīt pret apache) lighthttp installāciju. Pašā sākumā bija Apache un tad šādi gļuki netika novēroti (vismaz tā ar admin sākām domāt, bet diez lighthttp ir pie vainas). PS. Content-Length no php puses nemaz nav. Edited May 2, 2007 by andrisp
bubu Posted May 2, 2007 Report Posted May 2, 2007 Pamēģini padot content-length'u. Un content-type arī.
marrtins Posted May 2, 2007 Report Posted May 2, 2007 apache.log`os nekas neparādās? paprovē ar kādu snifferi paķer paketes un apstīties, ko jams sūta un saņem
Recommended Posts