За последние 24 часа нас посетили 22510 программистов и 1058 роботов. Сейчас ищут 692 программиста ...

Все-же как получать и передавать данные?

Тема в разделе "JavaScript и AJAX", создана пользователем Sofia, 24 янв 2019.

  1. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Доброго времени.
    Никак не могу разобраться, как все-же выводить данные? Работать ну никак не хочет.
    Вот скрипт:
    PHP:
    1. <?
    2. $test = 'Этот текст не отображается';
    3.  
    4. ?>    
    5.     <div id="content"></div>
    6.      
    7.     <script>
    8.         var t = null;
    9.  
    10. function update() {
    11.     // Начинаем процесс обновления - отключаем таймер
    12.     if (t !== null) {
    13.         clearTimeout(t);
    14.         t = null;
    15.     }
    16.  
    17.     // Грузим данные
    18.     $.get('ajax.php')
    19.         // При успешной загрузке...
    20.         .done(function(content) {
    21.             // ...скрываем старый блок
    22.             $('#content').fadeOut('slow', function() {
    23.                 $(this)
    24.                     .html(content) // Пока он скрыт - меняем его содержимое,..
    25.                     .fadeIn('slow'); // ...после чего показываем
    26.             });
    27.         })
    28.         // Успешно, не успешно ли был загружен файл - ставим новый таймер на вызов функции обновления
    29.         .always(function() {
    30.             t = setTimeout(function() {
    31.                 update();
    32.             }, 5000);
    33.         });
    34. }
    35.  
    36. update();
    37.     </script>
    а вот скрипт, который подгружается:
    PHP:
    1. <?
    2. echo $test;
    3. ?>
    4. <br>
    5. Обычный текст
    так вот, переменная должна передаваться в ajax.php, а она не передается... Еще никак не могу избавиться от плавного появления и исчезания текста =(

    Подскажите пожалуйста, как уговорить отображать переменные?
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Это ведь два независимых скрипта. Откуда в ajax.php возьмется $test? Это неопределенная переменная.
    --- Добавлено ---
    Выведите $test в первом скрипте, тогда ничего дополнительно подгружать будет ненужно.
     
  3. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    На первой страничке емеется значение в переменной. Это значение яхочу передать в файл ajax.php, а вот файл ajax.php по этой тепеменной будет делать выборку с базы данных и выводить на страничку постоянно свежую информацию.

    Вычитала, что вроде методом POST или GET это реально.
    Немного изменила скрипт:
    PHP:
    1. <?
    2. $_POST['test'] = 'Переменная';
    3.  
    4. ?>
    5. <div id="result"></div>
    6. <script type="text/javascript">
    7. $(function() {
    8.     (function worker() {
    9.       $.ajax({
    10.         url: 'ajax.php',
    11.         method: 'POST',
    12.         data: {'test':'test'},
    13.         success: function(data) {
    14.           $('#result').html(data);
    15.         },
    16.         complete: function() {
    17.           setTimeout(worker, 1000);
    18.         }
    19.       });
    20.     })();
    21. });
    22. </script>
    а вот файл ajax.php
    PHP:
    1. <?
    2. echo $_POST['test']; //не выводится
    3. ?>
    Что-то не получается переменную передать в ajax.php =(
     
  4. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Используй консоль f12, так выглядит в хроме. Смотри уходит ли запрос, что он получает, что он отвечает.
    Снимок экрана от 2019-01-24 17-45-56.png

    По хорошему для
    нужно обернуть в проверку на AJAX и в случае если это так по после echo exit(); Иначе в ответ пойдёт все что ниже.
     
  5. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    В общем пока удалось одну переменную передать.
    Вот код:
    PHP:
    1. <?
    2. $test = 'Переменная1';
    3. $test2 = 'Переменная2';
    4. ?>
    5. <div id="result"></div>
    6. <script type="text/javascript">
    7. $(function() {
    8.     (function worker() {
    9.       $.ajax({
    10.         url: 'ajax.php',
    11.         method: 'POST',
    12.         data: {'test':'<? echo $test;?>'},
    13.         success: function(data) {
    14.           $('#result').html(data);
    15.         },
    16.         complete: function() {
    17.           setTimeout(worker, 1000);
    18.         }
    19.       });
    20.     })();
    21. });
    22. </script>
    а вот ajax.php
    PHP:
    1. <?
    2. echo 'Вывод параметра 1 = '. $_POST['test'] .', Вывод параметра 2 = '. $_POST['test2'];
    3. ?>
    Как переменную $test2 туда же передать? =)
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @Sofia, пока вы не выведите значение на пыхе в первом скрипте, оно не попадет клиенту. Соответственно, с клиента вы его отправить не сможете.
     
  7. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    PHP:
    1. <div id="result">
    2.  <form>
    3.  <input type="hidden" name="vars[]" value="<?= $test ?>" >
    4.  <input type="hidden" name="vars[]" value="<?= $test2 ?>" >
    5. </form>
    6. </div>
    7. <script>
    8. $.ajax({
    9.    ...,
    10.    data: $('form').serialize();
    11. });
    12. </script>
     
  8. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    а.. нашла способ, вот так заработало:
    HTML:
    1. data: 'test=<? echo $test;?>&test2=<? echo $test2;?>',
     
  9. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Это не способ, ознакомься http://jquery.page2page.ru/
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    ...пока запостил, вы уже сделали. См., в data можно передавать и несколько пар ключ-значение (ключ вроде в кавычки не обязательно брать).
    --- Добавлено ---
    Это более сложный вариант. Там можно же и в JSON передавать.
    --- Добавлено ---
    И POST же позволяет передавать параметры не только в URL-формате ;)
     
  11. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Рано радовалась.
    На тестовой, пустой страничке работало... Код перенесла на основкую страничку, так не работает =(
     
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Может, если ты строку передаешь, нужно самой делать encodeURIComponent. На чистом JS, например, так.
     
  13. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    ну на отдельной тестовой страничке же работает как есть...
    А переношу на рабочую страничку, так даже POST запросы не уходят.
    Мне кажется что с чем-то конфликтует... Беда прям... Ищу вот... но пока без результатно =(
     
  14. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Проверьте доступность php-обработчика по целевому адресу. Наверное, будет лучше использовать абс. адрес, например /ajax.php ;)
    --- Добавлено ---
    Если реально ДАЖЕ НЕ УХОДЯТ, то чего-то не хватает на клиенте, например связи события с JS-обработчиком.
     
  15. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    иначе быть не может... Я уверена, что jquery просто не доходит.