За последние 24 часа нас посетил 17191 программист и 1248 роботов. Сейчас ищут 922 программиста ...

Запрос выполняется не полностью

Тема в разделе "JavaScript и AJAX", создана пользователем DekaR, 10 май 2007.

  1. DekaR

    DekaR Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    52
    Симпатии:
    0
    Приветствую всех.Возникла такая проблемма:на форме есть список 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:
    1.  
    2. <?
    3. // заголовки посылаем типа ;не кешировать и кодировку
    4. header("Content-type: text/html; charset=windows-1251");
    5. header("Cache-Control: no-store, no-cache, must-revalidate");
    6. header("Cache-Control: post-check=0, pre-check=0", false);
    7. //посылаем сами элементы списка
    8. echo  "  
    9. <option value=3 >Moscau</option>
    10. <option value=1 >Moca</option>";  ?>
    11.  
    Весь прикол в том, что в текстарию(aboutlove) он приходит целиком. А в city - без первого тега <option value=1 >
    а посему список не заполняется.Если перед первыми > и после < поставить пробел(а не слитно,как у меня)- эти символы в первом теге заменятся на что-то вроде &It и &gt В чём причина таких странностей ?
     
  2. DekaR

    DekaR Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    52
    Симпатии:
    0
    АУ!!!??Что никто не знает ?
     
  3. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Вы думаете, что если вам лень отлаживать свой код, то кто-то эти будет заниматься?
     
  4. Amian

    Amian Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    189
    Симпатии:
    0
    AlexGousev
    +1,темболее если до сих пор не знает таких вещей как:
     
  5. DekaR

    DekaR Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    52
    Симпатии:
    0
    AlexGousev
    Не хотел не кого обидеть. Мне не лень. Знал бы причину-давно б отладил и не отнимал время других людей.Ведь обращаются за советом ,уже подразумевается,что не знают решения (лень-отдельный случай )
     
  6. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    почему код волной пошел?
    расставь нормально отступы и напиши комментарии, где что и зачем делаешь. чтобы тот кто будет разбираться не ломал себе голову над этим. глядишь и сам разберешься )
     
  7. DekaR

    DekaR Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    52
    Симпатии:
    0
    vasa_c
    сделал.Но почему "съедает" перый <option value=3 > так и не понял
     
  8. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    В 15 строке оператор =+ - такого, вроде, нет: есть +=

    Комментарии ставятся либо /* */, либо //, а не \\

    А JavaScript-отладчик типа FireBug или хотя бы консоль ошибок есть?
     
  9. DekaR

    DekaR Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    52
    Симпатии:
    0
    AlexGousev отладчиков нет. Всё исправил,но всё равно не работает
     
  10. DekaR

    DekaR Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    52
    Симпатии:
    0
    Вот прикол .Изменил(упростил код ) чтобы разбираться .Так :[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]-не работает(та же проблемма)Есть соображения ?
     
  11. Amian

    Amian Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    189
    Симпатии:
    0
    А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]
     
  12. DekaR

    DekaR Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    52
    Симпатии:
    0
    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:
    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    2. "http://www.w3.org/TR/html4/loose.dtd">
    3.  
    4. <script language="javascript" type="text/javascript">
    5.             var  request;
    6.             function  loadit () {
    7.        
    8.     if (request.readyState == 4) {
    9.     document.all.mytemp.innerHTML = "<option>test </option>";
    10. document.all.mytemp.innerHTML += request.responseText;
    11. document.getElementById("mytemp").disabled=false;
    12. alert (document.all.mytemp.innerHTML);
    13.     };
    14. };
    15.             function  loadcites () {
    16.            
    17. request = new ActiveXObject("Msxml2.XMLHTTP");
    18.  
    19. request.onreadystatechange =loadit;    
    20. request.open("GET", "showcity.php");
    21. request.send();
    22.  };
    23.  
    24.  
    25. </head>
    26.  
    27.  
    28.  
    29.   <form action="showcity.php" method="post" enctype="multipart/form-data" name="form1">
    30.  <select name="mytemp"  >
    31.           <option valu="12" >not select</option>
    32.     </select>          
    33.         <select name="country"  onChange= "loadcites ()">
    34.             <option value="0" selected>--------- a ------------</option>
    35.             <option value="1" >b</option>
    36.             <option value="2">c</option>
    37.             <option value="3">d</option>
    38.             <option value="4">r</option>
    39.             <option value="5">e</option>
    40.        
    41.         </select>
    42. </form>
    43.  
    44. </body>
    45. </html>
    46.  
     
  13. DekaR

    DekaR Активный пользователь

    С нами с:
    18 ноя 2006
    Сообщения:
    52
    Симпатии:
    0
    Но люди :( Я уже замучался уже упростил код до ::
    HTML:
    1.  
    2. ........................
    3.  
    4. <script language="javascript" type="text/javascript">
    5.             var  request;
    6.             function  loadit () {
    7.         newOption = document.createElement("OPTION");
    8.     newOption.value = "0";
    9.         newOption.text = "Пожалуйста подождите...";
    10.         document.all.sp.options.add(newOption,1);
    11. if (request.readyState == 1) {
    12. newOption = document.createElement("OPTION");
    13.     newOption.value = "0";
    14.         newOption.text = "Пожалуйста подождите...";
    15.         document.all.sp.options.add(newOption,1);
    16.         document.all.sp.disabled=true;};
    17.     if (request.readyState == 4) {
    18.     for (i = document.all.sp.options.length ; i >= 0 ; i--) document.all.sp.options.remove(i);
    19.  
    20. document.all.sp.innerHTML = request.responseText;
    21.     document.all.sp.disabled=false;
    22.     alert (document.all.sp.innerHTML);
    23.    
    24.     };
    25. };
    26.             function  selec () {
    27.            
    28. if (window.XMLHttpRequest) {
    29. request = new XMLHttpRequest();
    30. request.onreadystatechange =loadit ;       
    31. request.open("GET", "sc.php");
    32. request.send(null);
    33.  
    34. } else {
    35. if (window.ActiveXObject) {
    36. request = new ActiveXObject("Microsoft.XMLHTTP");
    37. if (request) {
    38. request.onreadystatechange =loadit;    
    39. request.open("GET", "sc.php");
    40. request.send();
    41.  
    42. }} };
    43.  
    44.               };
    45. </head>
    46.  
    47. <form name="form1" method="post" action="" >
    48.   <select name="sp" id="sp" onChange="selec()">
    49.     <option value="1">one</option>
    50.     <option value="2">two</option>
    51.   </select>
    52. </form>
    53. </body>
    54. </html>
    55.  
    дальше некуда.sc.php=showcity.php всё равно не работает !Я про IE . В опере всё рулит. Что експлоеру нвдо ?
    Та же проблеммк . Где я лохонулся ?