За последние 24 часа нас посетили 20763 программиста и 1010 роботов. Сейчас ищут 388 программистов ...

Обработка запроса Post с помощью Ajax. Как можно реализовать?

Тема в разделе "PHP для новичков", создана пользователем keepper, 8 сен 2016.

  1. keepper

    keepper Новичок

    С нами с:
    8 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    Здравствуйте, снова необходима ваша помощь, ребята!)
    Мне необходимо произвести обработку Post запроса с помощью Ajax. Почитал в инете по этой теме, но ничего дельного не дают, одна теория без дельных объясняемых примеров...(
    Суть в чём: хочу поймать запрос post с помощью ajax, аналогично такому способу на php:

    if (isset($_POST['sended'])){
    // Выполнение операций...
    }

    Вот аналогичная функция на AJAX мне необходима на сайте, а как её воплотить в жизнь вообще не представляю(
    Я крайний чайник в AJAX, к сожалению, потому без вас не справиться(
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Где работает пхп? А где работает аякс?
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    AJAX-запрос с точки зрения сервера это обычный запрос. Это на клиенте есть разница - аякс там или нет. И "ловится" оно точно так же. Проверкой $_POST.
     
  4. keepper

    keepper Новичок

    С нами с:
    8 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    А как на Ajax этот $_POST ловится вообще?) С этим вопросом и хочу разобраться))
    --- Добавлено ---
    Всё в одном скрипте. У меня лендинг, не вижу смысла к ООП топать, ток контроллер, да админку вынес.
    В index.php нужно его обработать прям в теле. При наличии $_POST['sended'] я буду показывать окошко через ajax
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Ты прям совсем не предпринял попытки вдуматься в смысл вопроса. ПХП у тебя работает на сервере. Аякс у тебя выполняется силами клиентами. Если ты хочешь словить пост-запрос аяксом - у тебя выйдет примерно ничего, потому что в страницу, загруженную в браузер этот же браузер не сможет сделать пост-запрос. Если же ты делаешь аякс-запрос к серверу - то он там особо ни чем не отличается от других "обычных" запросов. Веб-сервер как бы почти не знает аякс это или не аякс. Ему это просто запрос. Да, там клиент может пару наводящих на мысль полей установить, но в остальном это будет обычный запрос. Веб-сервер разрешит к какому механизму отправить его обработку, сообразит переменные окружения и запустит исполнителя - в твоем случае пхп-машину. Пхп-машина всосет входные данные и выплюнет выходные. И так на каждом запросе. Не важно аякс или не аякс.
     
  6. keepper

    keepper Новичок

    С нами с:
    8 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    Всё в одном скрипте. У меня лендинг, не вижу смысла к ООП топать, ток контроллер, да админку вынес.
    В index.php нужно его обработать прям в теле. При наличии $_POST['sended']
    Вся проблема кроется в том, что я чайник в Ajax.
    Как я понял, поймать запрос Post на Ajax нельзя, как на php?
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Как пхп ЛОВИТ пост-запрос?
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    AJAX - это не язык программирования. Это механизм отправки запросов к серверу в фоновом режиме. Это механизм JavaScript. JavaScript работает на клиенте. В браузере. Не на сервере. То, что у вас в коде на сервере прописан AJAX - это не значит, что он у вас выполняется там же. Там у вас формируется страница и отправляется клиенту.

    Вот php-скрипт:

    PHP:
    1. <?php
    2. echo "<script>alert('Омайгадабл!');</script>";
    Он содержит в себе JavaScript, но тупо в виде текста, который он отправит клиенту. Для PHP - это просто набор символов. Просто текст, не имеющий смысла. А для клиента тут есть смысл. Клиент получит скрипт и выполнит его.

    AJAX работает следующим образом:
    1) На странице, в клиенте, в JS, формируем запрос.
    2) Отправляем запрос С КЛИЕНТА НА СЕРВЕР.
    3) Ждем ответ сервера.
    4) На сервере ловим запрос. Он может быть POST, может GET. Как задали, так и будет.
    5) Отдаем ответ, обычным echo, например.
    6) AJAX принимает ответ, и дальше запускает какую-то свою логику.

    Но никакого POST к аяксу никогда не придет, потому что он есть только на клиенте, этот твой аякс. Теперь понятно?
     
  9. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
  10. keepper

    keepper Новичок

    С нами с:
    8 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    Понял) И до меня допёрло как всё сделать)
    Просто я ща болею, туго соображаю и сразу не допёр, что можно тупо сделать так:
    <? if(isset($_POST['sended'])){
    echo "
    //Осуществение показа формы через методы ajax
    ";
    }
    --- Добавлено ---
    if (isset($_POST['sended'])){
    }
    Я это имел в виду
    --- Добавлено ---
    благодарю за помощь и разъяснения)
     
  11. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    пхп не "ловит" никаких запросов. Запрос (любой) приходит к веб-серверу (веб-сервер тоже не "ловит" запросы). В заголовке этого запроса, помимо ресурса и версии протокола передачи гипертекста, указывается еще и желаемый "метод" запроса. Гет, пост, пут, делит, опшн и так далее и тому подобное. Это просто строка. Глядя на адрес ресурса, веб-сервер выбирает (разрешает) каким образом этот запрос будет обработан. В случае пхп-файлов - пхп-машиной. Решив передать обработку запроса пхп-машине, веб-сервер создает необходимое начальное окружение, передавая собранные сведения о запросе, и запускает процесс пхп-машины. Та, в свою очередь, читает входные данные и располагает их удобным образом в суперглобальных массивах - _GET, _POST, _SERVER и так далее.

    Содержимое _POST это всего лишь удобно обработанное пхп-машиной исходное тело запроса, которое веб-сервер получил от клиента и передал пхп-машине при её запуске. Не более того.

    Ну и наконец, isset($_POST['sended']) может для тебя и означает "словить пост-запрос" но на самом деле это читается примерно как "существует ли ключ сэндед в суперглобальном массиве _ПОСТ".
    Ты можешь создать пустой скрипт, сделать в нем $_POST['sended'] = 1 и потом вставить свою "проверку". Просто открыв этот скрипт в браузере (а "просто" в данном случае будет подразумевать дефолтный гет-запрос) ты вдруг обнаружишь, что выполнился кусок кода, который ты прикрыл своей "ловушкой пост-запросов". Но ведь это не пост-запрос, верно? Стало быть дырявая "ловушка".

    Отправив постом форму на урл, в котором есть параметры - эти параметры упадут в _GET. Но это же не гет-запрос!!! Это ж пост-запрос!!! Паника!!!
    И еще есть смачные штуки типа _SERVER, _COOKIE, _ENV, _SESSION но это не значит, что они появляются когда делается сервер-, куки-, энв- или сэшн-запрос. Формально, таких методов в хттп даже не существует. Но в памяти пхп-машины в момент исполнения - они есть.

    Вот. Это магия обработки запросов веб-сервером и пхп-машиной. Ну а аякс, как тебе уже сказали, это по сути всего лишь такой же запрос браузером ресурса на сервере, как он обычно делает при открытии страничек и фотографий и тп, только без перезагрузки текущей страницы. Браузер от имени скрипта, который исполняется на текущей странице, делает нужные запросы без перезагрузки этой самой страницы. Обычные хттп-запросы.
     
    rewert нравится это.