За последние 24 часа нас посетили 17152 программиста и 1457 роботов. Сейчас ищут 1450 программистов ...

Получение данных из PHP в Javascript

Тема в разделе "JavaScript и AJAX", создана пользователем blroman, 4 ноя 2020.

  1. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    Здравствуйте. У меня есть два файла с кодом. В первом код джаваскрипта, а во втором ПХП. В ПХП есть две переменных в которых хранятся массивы. Эти две переменные мне нужно передать во второй файл в переменные джаваскрипта. Скажите, как правильно это сделать?
    Я пробывал сделать следующее:
    Код (Text):
    1. <?
    2. $name=array();
    3. //тут что-то происходит
    4. return $name;
    5. ?>
    6. <script>
    7. name="<? echo $name; ?>;
    8. </script>
    Это у меня не сработало.
    P.S. одна из функций джаваскрипта должна вызываться при загрузке страницы.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    748
    Адрес:
    Татарстан
    1. Просто массив через echo не вывести, выводить для js через json_encode()
    2. Что за бред return ? Куда return? Это же не функция
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    @blroman почитай что делает return "после", либо пихай еду в глаз, жопой разговаривай, ушами ссы - вот твой код
    --- Добавлено ---
    типичный pи3дешь. Если ты был там реально, то бы знал English на уровне разговорной/письменной речи и не стал писать по ГовноРусскому PHP как ПХП - т.к. воспроизводят так англ. слова only люди с рашки, которые даже писать по русски не умеют в компьютере, где подсветка даже ругается волнами "пробывал". По гугли... пробОвал ?
     
  4. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    return вне функции тоже можно использовать, он завершает выполнение скрипта
     
  5. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    @ADSoft спасибо за ответ.
    Я знаю, что выводить надо через json_encode(). Этот кусочек кода был просто для примера. Согласен, пример не очень хороший. Я не могу понять, как принять результат в JS.

    @MouseZver
    Это всё, что ты мне можешь написать? То есть, практической помощи от тебя ни какой. Только шум.
    Да, я живу в Канаде и знаю английский и мог бы написать PHP и JavaScript. Ты сам пишешь как попало, начинаешь предложение с маленькой буквы. Ты, кстати, оскорбил русский, назвав его ГовноРусским. Так может тебе стоит писать не на русском, а на анлгийском. Ты же уверен, что знаешь его лучше меня.
    Если захочешь помочь мне, буду благодарен.
    Спасибо за ответ.
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    748
    Адрес:
    Татарстан
    Надо понимать что такое php и js.
    Ваш php код формирует необходимый html, в том числе можно и вставки js кода.

    Как таковой "передачи в js" не существует, если не считать Аякс запросы. Там идёт прямой запрос к php, результат в js... Но это скорее передача данных.

    Конкретно у вас какая проблема? Что не получается?
     
  7. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    @ADSoft
    Сначала скажите, я правильно сделал?
    PHP:
    1. $someArray=new Array('1','2','3','4','5');
    2. echo json_encode($someArray);
    Если да, то как получить результат в JavaScript?
     
  8. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    У меня получилось передать данные из PHP в JavaScript. Я это сделал через fetch.
    PHP:
    1. $arr=new arrya(1,2,3,4,5,6);
    2. $a=json_encode($arr);
    3. echo $a;
    Код (Javascript):
    1. fetch('myfile.php')
    2.     .then(res => res.json())
    3.     .then((out) => {
    4.         console.log('Output: ', out);
    5. }).catch(err => console.error(err));
    Теперь мне надо узнать как получить имена всех папок в определенной папке. Как я знаю, есть два метода: glob('folder/*',GLOB_ONLYDIR); и scandir(); Каким из них пользоваться?
     
  9. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    748
    Адрес:
    Татарстан
    Любым, какой вам больше нравится
     
  10. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    Если я использую scandir();, то получаю ошибку в браузере
    Код (Text):
    1. SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data showGals.js:5:25
    2.     <anonymous> http://localhost/scripts/showGals.js:5
    3.     (Async: promise callback)
    4.     <anonymous> http://localhost/scripts/showGals.js:5
    Если использую glob, то получаю пустой массив. Хотя, в указанной мной директории есть поддиректории.
     
  11. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    748
    Адрес:
    Татарстан
    Используйте их верно, смотрите сначала что в php получаете. Переведите ошибку и пойметем в чем дело
     
  12. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    @ADSoft
    Я уже разобрался в чем дело. Когда я написал
    PHP:
    1. $path="/*";
    2.  
    3. $dirs=[];
    4. $dirs=glob($path,GLOB_ONLYDIR);
    5. echo json_encode($dirs);
    JavaScript получил папки из диска С:. Я, конечно же, написал полный путь и получил результат, но что будет когда я проект в интернете опубликую?
     
  13. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    Еще такой вопрос. Вот код
    Код (Javascript):
    1. let v1=[];
    2. fetch('myfile.php')
    3.     .then(res => res.json())
    4.     .then((out) => {
    5.         v1=out;
    6. }).catch(err => console.error(err));
    когда скрипт выполняется автоматически, то v1 не получает значение out, а если выполнить в дебаггере пошагово, то v1 получает значение. Я думаю, что есть задержка во времени, то есть проходит какое-то время до получения данных из PHP. Тогда как передать в v1 значение из out для дальнейшей работы?
     
  14. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    748
    Адрес:
    Татарстан
    почитайте про асинхронные запросы, fetch как раз такой

    и весь вопрос где и как вы смотрите свою переменную

    Код (Javascript):
    1. let v1=[];
    2. fetch('myfile.php')
    3.     .then(res => res.json())
    4.     .then((out) => {
    5.         v1=out;
    6.         console.log('тут будут именно после получения данных');
    7. }).catch(err => console.error(err));
    8. console.log('тут - как повезет, если ajax отработает раньше то может и быть, а может и не быть');
     
  15. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    Спасибо за подсказку. Если вместо v1=out; написать console.log(out); то вывод будет немедленный, в любом другом случае - как повезет.