Странности с abort();

Апокалипсис

тех дир matras.ru
Странности с abort();

Ситуация такая есть код:


function mainrel(fl,url)
{

sTime();
top.preq.abort();
top.preq.onreadystatechange=mainact;
top.preq.open("post","a.php",true);
top.preq.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=windows-1251");

top.preq.send("uid="+top.muid+"&a=getmesg&lid="+lastId+"&z="+Math.random()+"&"+url);

}
Этот код работает прекрасно в IE, а в FF responseText в ф-ции mainact по таймауту выдаёт два раза одно и тоже (firebug'ом смотрю, сам ответ сервера разный, а responseText повторяется дважды одно и тоже. Убираю top.preq.abort(); в FF всё начинает работать прекрасно а в IE перестаёт срабатывать setTimeout(); Чудеса какие-то, может кто сталкивался?

Заранее спасибо!
 
Фикс, естественно, во такой..

---- кривой код -----
top.preq.onreadystatechange=mainact;
top.preq.open("post","a.php",true);

---- прямой код -----
top.preq.open("post","a.php",true);
top.preq.onreadystatechange=mainact;

P.S
Кстати, для IE команда abort не нужна в данном случае.
 
algo
угу спасибо, всё заработало норм) А для чего abort(); нужен в таких случаях? Чтобы оборвать соединения возможно используемые этим объектом XMLHttpRequest ?)
 
Угу спасибо. Дабы не создавать тему спрошу тут.
Вот программа работает отлично (может работать целый день отлично, а может раз в час выбивать такую ошибку (firebug) выбивает:

uncaught exception: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXMLHttpRequest.send]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: javascript: eval(__firebugTemp__); :: anonymous :: line 1" data: no]

Вот что это значит что то я не нашёл нигде((
 
вопрос как-то связан с этой темой ? Создай новую лучше.
 
algo
Косвенно связан. Нигде не встречал таких ошибок как с вышеуказанными ф-циями, просто хотелось бы примерно узнать критично ли это или нет.

-~{}~ 06.05.07 20:58:

Волнует то что, скрипт может работать не вызывая проблем, но бывает эта ошибка вылетает...
 
а можно чуть болие конкретный код

-~{}~ 07.05.07 00:19:

так навсякий случай метод send() можно использовать тока если readyState == 0 .
 
Апокалипсис
гугл
http://www.google.ru/search?hl=ru&q=NS_ERROR_NOT_INITIALIZED&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=
 
ну ф-ция mainact:
function mainact(){

if(top.preq.readyState==4){
if(top.preq.status==200){
if(top.preq.responseText=="reload")
{
top.location='a.php?uid='+sesid+'&newcolor=yes';
}else{

var reply=new Array();
var lines=new Array();
var aline=new Array();
tpr = top.preq.responseText.toString();
reply = tpr.split('^');
lines = reply[0].split('|');
for(i=0;i<(lines.length-1);i++)
{
aline=lines[ i ].split('*');
pm(aline[0],aline[1],aline[2],aline[3],aline[4]);
lastId=aline[0];
}
}
}
}
}

где pm - просто парсинг мессаг с флагами (допустим 1 - приватное, 2 - общее) + innerHTML
sTime(); - ф-ция задёт обновление..
И всё, больше нет никаких ф-ций


Да ещё я обращаюсь к объекту который задан в top файле фреймов(т.е. в общем), может это ни есть гуд?
ps/ [ i ] - это я поставилл чтобы форум не переводил в ббкод

-~{}~ 06.05.07 21:26:

BRat
cпасиб а я что то искал да нетак(
 
flash-vkv
ну да с аборт уже решил) убрал его и всё гуд) только вышеуказанная ошибка бывает вылазеет а бывает инет)
ps/ щас как раз читаю что это
 
а тогда можеть быть понял
if(top.preq.readyState==4){
..... это ваш код ......
top.preq.abort();
}

но всеже по коду непонятно при каждом запросе вы создаете заново top.preq. или используете преждний

-~{}~ 07.05.07 00:44:

а ошибка вскорее всего потомучто
при send() у вас readyState != (0 || 4 ).
 
используется прежний естественно, один раз заданный в top'е
угумс, спасиб проверю отслежу ридистайт при сенде)
 
Сцыла в тему http://www.quirksmode.org/blog/archives/2005/09/xmlhttp_notes_a_1.html
 
Сверху