За последние 24 часа нас посетили 23056 программистов и 1697 роботов. Сейчас ищут 1770 программистов ...

Исходный код ajax

Тема в разделе "JavaScript и AJAX", создана пользователем Dimon2x, 6 июл 2018.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Не понимаю, сделал обычный ajax запрос, что бы подгрузилась разметка, в браузере всё отображается, что надо, а заглянул в исходный код, а там пустота, почему, кто с таким сталкивался?
    --- Добавлено ---
    Во вкладке elements присутствует, а ctrl+u там её нету
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @Dimon2x, Ctrl+U - это исходный код. Т.е. тот, который был изначально при загрузке страницы, а все элементы, которые появляются динамически, там не отображаются.
     
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @Deonis а как тогда его получить?
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Получить или посмотреть? Посмотреть можно инспектируя код в консоли. А получить, если мы говорим о JS, то можно так же, как и любой другой элемент.
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @Deonis Здесь есть

    555.jpg

    А здесь нету

    555.jpg
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Про это я и говорил. Чего тогда не хватает для полного счастья? В консоли же нормально всё видно.
     
  7. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    В общем я хочу сделать, как бы двойной ajax, сначала нажимаю на ссылку, загружается форма, потом надо эту форму заполнить и выполнить ajax запрос с ней.
    --- Добавлено ---
    @Deonis не знаю, чего не хватает.
     
  8. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Может надо было начать с того, что что-то не работает? И скорее всего, что не работает Ajax-запрос для отправки данных из формы. Повторятся о том, что такое делегирование событий, я уже не буду, поэтому сразу к коду...
    Если jQuery:
    Код (Javascript):
    1. $('#div_content_and_user').on('submit', '#form_settings_user', function(e) {
    2.   e.preventDefault();
    3.   // тут выполняете Ajax-запрос с данными формы
    4. });
    Если нативный JS:
    Код (Javascript):
    1. document.getElementById('div_content_and_user').addEventListener('submit', function(e) {
    2.   if (e.target.id === 'form_settings_user') {
    3.     e.preventDefault();
    4.     // тут выполняете Ajax-запрос с данными формы
    5.   }
    6. });
     
  9. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Вот так у меня сейчас

    HTML:
    1.    <a href="#" id="settings" ><li>Настройки</li></a>
    2.             </ul>
    3.         </div>
    4.    
    5.      
    6.         <div id="div_content_and_user">
    7.         </div>
    8.      
    9.         <script>
    10.                 settings.addEventListener('click', function (e) {
    11.                  e.preventDefault();
    12.  
    13.               xmlhttp = new XMLHttpRequest();
    14.  
    15.                 xmlhttp.onreadystatechange = function () {
    16.                     if (this.readyState == 4 && this.status == 200) {
    17.                       div_content_and_user.innerHTML = this.responseText;
    18.                    }
    19.                 }
    20.                xmlhttp.open("GET", "settings_user.php", true);
    21.                 xmlhttp.send();
    22.  
    23.            })
    24.         </script>
     
  10. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Замечтательно. А я вам показал, чего еще не хватает.
     
  11. johovich

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

    С нами с:
    24 авг 2016
    Сообщения:
    146
    Симпатии:
    17
    А где данные для отправки? Данных у тебя нету.
     
  12. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @Deonis Вот как раз то, в твоей статье, кнопка в исходном коде, не появляется.
    --- Добавлено ---
    @johovich пока что данные отправлять не надо, надо просто вывести шаблон с формой. Открыть страницу без перезагрузки
    --- Добавлено ---
    @Deonis

    HTML:
    1. <div class="parent">
    2.               <div class="child">
    3.                 <div class="grandchild"></div>
    4.               </div>
    5.             </div>
    6.            
    7.             <script>
    8.                 document.addEventListener('click', e => {
    9.                   if (e.target.tagName === 'BUTTON') {
    10.                     console.log('А вот и наша кнопка приехала!');
    11.                   } else {
    12.                     console.log('Это не кнопка...');
    13.                   }
    14.                 });
    15.                
    16.                 document.querySelector('.grandchild').innerHTML = '<button>Hi there!</button>';
    17.             </script>
    Отобразиться в браузере, но в исходнике не будет её.
     
  13. johovich

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

    С нами с:
    24 авг 2016
    Сообщения:
    146
    Симпатии:
    17
    Смотри во вкладке network, что приходит с сервера в ответ на Аякс запрос.
     
  14. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @johovich

    PHP:
    1. <form action="" method="POST" id="form_settings_user">
    2.     <input class="qqq" id="a001" name="name" type="text" placeholder="Изменить имя">
    3.     <input class="qqq" id="a001" name="tel" type="text" placeholder="Изменить телефон">
    4.     <input  name="goo" type="submit" value="Изменить">
    5. </form>
    6.  
    7. <script>
    8. console.log(333);
    9.        var updateUser = document.querySelector('.update-user');
    10.      
    11.      
    12.        
    13.              updateUser.addEventListener('click', function (e) {
    14.                  //e.preventDefault();
    15.                
    16.                  console.log(333);
    17.  
    18.        
    19.               xmlhttp = new XMLHttpRequest();
    20.  
    21.                 xmlhttp.onreadystatechange = function () {
    22.                     if (this.readyState == 4 && this.status == 200) {
    23.                        //likeCount[i].innerHTML = this.responseText;
    24.                    }
    25.                 }
    26.                //xmlhttp.open("POST", "/comment/like", true);
    27.                //xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
    28.            //xmlhttp.send("id=" + commentId);
    29.  
    30.            })
    31.        
    32.      
    33. </script>    
     
  15. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Я статьи не писал.
    Кнопка формы? Так она и не будет появляться в исходном коде, т.к. форма с этой кнопкой добавляются динамически. Повторю еще раз... Исходный код - этот только тот HTML, который был при загрузке страницы, на то он и исходный.
     
  16. johovich

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

    С нами с:
    24 авг 2016
    Сообщения:
    146
    Симпатии:
    17
    Исходный код когда открываешь, браузер заново по ссылке грузит. Там ничего аяксового и не будет. Смотри по f12, там все должно появляться и исчезать, когда Аякс работает.
    --- Добавлено ---
    Ну это ты погорячился. :) Он там исходный не поэтому. Просто там то, что сервер отдаёт по ссылке.
     
  17. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Как тогда сделать, что бы можно было отыскать элементы, которые создались динамически?
     
  18. johovich

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

    С нами с:
    24 авг 2016
    Сообщения:
    146
    Симпатии:
    17
    Еще раз громко и чётко. F12 нажимаешь и видишь свою страницу в исходном коде внизу и отрендеренную сверху, там все и смотришь, там твои кнопки будут появлятся и исчезать.
     
  19. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Где тут смайлик "рукалицо"?
    Короче
    Код (Javascript):
    1. var divContentAndUser = document.getElementById('div_content_and_user');
    2. // Получаем и выводим форму
    3. document.getElementById('settings').addEventListener('click', function(e) {
    4.   e.preventDefault();
    5.   var xhr = new XMLHttpRequest();
    6.   xhr.onreadystatechange = function() {
    7.     if (this.readyState == 4 && this.status == 200) {
    8.       divContentAndUser.innerHTML = this.responseText;
    9.     }
    10.   }
    11.   xhr.open("GET", "settings_user.php", true);
    12.   xhr.send();
    13. });
    14. // Отправляем данные формы
    15. divContentAndUser.addEventListener('submit', function(e) {
    16.   if (e.target.id === 'form_settings_user') {
    17.     e.preventDefault();
    18.     var xhr = new XMLHttpRequest();
    19.     xhr.open('POST', 'path/to/handler.php');
    20.     xhr.send(new FormData(e.target));
    21.   }
    22. });
     
    #19 Deonis, 6 июл 2018
    Последнее редактирование: 6 июл 2018
    Dimon2x нравится это.
  20. johovich

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

    С нами с:
    24 авг 2016
    Сообщения:
    146
    Симпатии:
    17
    Это ты на меня так ругнулся? :)
     
  21. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @johovich, я ни на кого, сударь, не ругаюсь. Особенно, когда уставший и хочу спать. И спорить или доказывать что-то - желания тоже нет. Хочу добить эту тему до логического финала и уткнуться фейсом в подушку.
     
  22. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @Deonis Спасибо, работает, теперь надо разобраться, с подставлением ответа.
     
  23. johovich

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

    С нами с:
    24 авг 2016
    Сообщения:
    146
    Симпатии:
    17
    Что ж, сударь, извольте. За сим откланиваюсь. :)
     
  24. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Уже делаю тупые опечатки. @Dimon2x, поправил код выше.
     
  25. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @Deonis А как получить данные, которые отправились? Выводит undefined

    Код (Javascript):
    1. // Отправляем данные формы
    2. divContentAndUser.addEventListener('submit', function(e) {
    3.   if (e.target.id === 'form_settings_user') {
    4.     e.preventDefault();
    5.     var xhr = new XMLHttpRequest();
    6.         console.log(this.responseText);
    7.     xhr.open('POST', 'settings_user.php');
    8.     xhr.send(new FormData(e.target));
    9.   }
    10. });