Приветствую всех.Возникла такая проблемма:на форме есть список city .Если обработчик событий : [js]var request; function loadit () { // функция обрабатывает статус запроса if (request.readyState == 1) { // если запрос в процессе выполнения-добавляем в список текст ,типа подождите и блокируем его. newOption = document.createElement("OPTION"); newOption.value = "0"; newOption.text = "Пожалуйста подождите..."; document.all.city.options.add(newOption,1); document.all.city.disabled=true;}; if (request.readyState == 4) { //если запрос выполнен ,то for (i = document.all.city.options.length ; i >= 0 ; i--) document.all.city.options.remove(i); //очищаем список(что б наверняка),а не только первый элемент. document.all.city.innerHTML = request.responseText; //добавили всё ,что с сервера получили- в список. document.all.aboutlove.value=request.responseText; // добавили тоже самое в текст арию(для контроля) document.all.city.disabled=false; };};[/js] запрос присылается из файла : PHP: <? // заголовки посылаем типа ;не кешировать и кодировку header("Content-type: text/html; charset=windows-1251"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); //посылаем сами элементы списка echo " <option value=3 >Moscau</option> <option value=1 >Moca</option>"; ?> Весь прикол в том, что в текстарию(aboutlove) он приходит целиком. А в city - без первого тега <option value=1 > а посему список не заполняется.Если перед первыми > и после < поставить пробел(а не слитно,как у меня)- эти символы в первом теге заменятся на что-то вроде &It и > В чём причина таких странностей ?
AlexGousev Не хотел не кого обидеть. Мне не лень. Знал бы причину-давно б отладил и не отнимал время других людей.Ведь обращаются за советом ,уже подразумевается,что не знают решения (лень-отдельный случай )
почему код волной пошел? расставь нормально отступы и напиши комментарии, где что и зачем делаешь. чтобы тот кто будет разбираться не ломал себе голову над этим. глядишь и сам разберешься )
В 15 строке оператор =+ - такого, вроде, нет: есть += Комментарии ставятся либо /* */, либо //, а не \\ А JavaScript-отладчик типа FireBug или хотя бы консоль ошибок есть?
Вот прикол .Изменил(упростил код ) чтобы разбираться .Так :[js]<script language="javascript" type="text/javascript"> var request; function loadit () { if (request.readyState == 4) { document.all.mytemp.innerHTML = request.responseText; document.all.mytemp.disabled=false; alert (document.all.mytemp.innerHTML); }; }; function loadcites () { if document.getElementById("country").options[document.getElementById("country").selectedIndex].value==0 ) {document.getElementById("mytemp").disabled=true;} else { request = new XMLHttpRequest(); request.onreadystatechange =loadit ; request.open("GET", "showcity.php"); request.send(null); }; }; </script> [/js] теперя в опере работает.А если поменять выделеное для IE ТАК [js]<script language="javascript" type="text/javascript"> var request; function loadit () { if (request.readyState == 4) { document.all.mytemp.innerHTML = request.responseText; document.all.mytemp.disabled=false; alert (document.all.mytemp.innerHTML); };}; function loadcites () { if (document.getElementById("country").options[document.getElementById("country").selectedIndex].value==0 ) {document.getElementById("mytemp").disabled=true;} else { request = new ActiveXObject("Microsoft.XMLHTTP"); request.onreadystatechange =loadit; request.open("GET", "showcity.php"); request.send(); }; }; </script>[/js]-не работает(та же проблемма)Есть соображения ?
АctiveX enabled в браузере? попробуй так : "new ActiveXObject("Msxml2.XMLHTTP");" А вообще,лучше используй эту функцию для определения браузера: [js]function GetXmlHttpObject() { var xmlHttp=null; try { xmlHttp=new XMLHttpRequest(); } catch (e) { try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; }[/js]
Amian так ШТТПРеквест работает,но всё таже промблемма . (пропадает первый тег ) И вот ещё прикол дописал : [js]document.all.mytemp.innerHTML = "<option>test </option>[/js]"; перед [js]document.all.mytemp.innerHTML += request.responseText;[/js] теперь при команде после этих тегов :[js]alert (document.all.mytemp.innerHTML);[/js] становится видно,что теперь выделеный тег удаляется,а первый тег ав запросе-теперь нет. Да,кстати city и mytemp - один и тот же объект. Превожу полный код штмл файла : HTML: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script language="javascript" type="text/javascript"> var request; function loadit () { if (request.readyState == 4) { document.all.mytemp.innerHTML = "<option>test </option>"; document.all.mytemp.innerHTML += request.responseText; document.getElementById("mytemp").disabled=false; alert (document.all.mytemp.innerHTML); }; }; function loadcites () { request = new ActiveXObject("Msxml2.XMLHTTP"); request.onreadystatechange =loadit; request.open("GET", "showcity.php"); request.send(); }; </script> </head> <body> <form action="showcity.php" method="post" enctype="multipart/form-data" name="form1"> <select name="mytemp" > <option valu="12" >not select</option> </select> <select name="country" onChange= "loadcites ()"> <option value="0" selected>--------- a ------------</option> <option value="1" >b</option> <option value="2">c</option> <option value="3">d</option> <option value="4">r</option> <option value="5">e</option> </select> </form> </body> </html>
Но люди Я уже замучался уже упростил код до :: HTML: ........................ <script language="javascript" type="text/javascript"> var request; function loadit () { newOption = document.createElement("OPTION"); newOption.value = "0"; newOption.text = "Пожалуйста подождите..."; document.all.sp.options.add(newOption,1); if (request.readyState == 1) { newOption = document.createElement("OPTION"); newOption.value = "0"; newOption.text = "Пожалуйста подождите..."; document.all.sp.options.add(newOption,1); document.all.sp.disabled=true;}; if (request.readyState == 4) { for (i = document.all.sp.options.length ; i >= 0 ; i--) document.all.sp.options.remove(i); document.all.sp.innerHTML = request.responseText; document.all.sp.disabled=false; alert (document.all.sp.innerHTML); }; }; function selec () { if (window.XMLHttpRequest) { request = new XMLHttpRequest(); request.onreadystatechange =loadit ; request.open("GET", "sc.php"); request.send(null); } else { if (window.ActiveXObject) { request = new ActiveXObject("Microsoft.XMLHTTP"); if (request) { request.onreadystatechange =loadit; request.open("GET", "sc.php"); request.send(); }} }; }; </script> </head> <body> <form name="form1" method="post" action="" > <select name="sp" id="sp" onChange="selec()"> <option value="1">one</option> <option value="2">two</option> </select> </form> </body> </html> дальше некуда.sc.php=showcity.php всё равно не работает !Я про IE . В опере всё рулит. Что експлоеру нвдо ? Та же проблеммк . Где я лохонулся ?