За последние 24 часа нас посетили 16875 программистов и 1702 робота. Сейчас ищут 945 программистов ...

Ajax POST запрос

Тема в разделе "JavaScript и AJAX", создана пользователем Pyroman, 28 май 2012.

  1. Pyroman

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

    С нами с:
    20 май 2012
    Сообщения:
    11
    Симпатии:
    0
    Здравствуйте. Возможно ли сделать выполнение скрипта при POST запросе через AJAX прямо в данном файле? Есть файл index.php и в нём следующий AJAX скрипт:
    Код (Text):
    1. <script type="text/javascript" src="http://mysite.ru/jquery-1.7.2.js"></script>
    2. <script type="text/javascript">
    3.         function buy1(that) {
    4.     var count = $(that).closest('form').find('.count').val();
    5.     var buy4 = $(that).val();
    6.    
    7.     $.ajax({
    8.         type: "POST",
    9.         data: "count="+count+"&buy0="+buy4+"&hbdgvffvetvfgdvgfvdgvfgdvghfvdghvfghdv=fbhabfhbshfbhsbfh",
    10.         url: 'http://mysite.ru/engine/modules/shop/index.php',
    11.         success: function(data) {
    12.             alert(data);
    13.         }
    14.     });
    15. }
    16. </script>
    А вот так должен вызываться скрипт при нажатии на кнопку:
    Код (PHP):
    1. if(isset($_POST['buy0']))
    2. {
    3. include('pokupka.php');
    4. } 
    Но возникла проблема.
    Раньше, когда мне надо было выполнить скрипт непосредственно в файле после POST запроса при нажатии на конопку (без AJAX) я использовал "if(isset($_POST['abc']))", всё было отлично, но как я понял с AJAX запросом это не прокатывает, т.к. мне возвращается содержимое всего файла index.php... Как это можно реализовать с AJAX? Спасибо.
     
  2. Easy

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

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    В данном случае лучше всего вынести пхп код
    Код (Text):
    1. if(isset($_POST['buy0']))
    2. {
    3. include('pokupka.php');
    4. }
    в отдельный скрипт.

    но можно поступить ещё несколькими способами, правда они больше подойдут для сайта в котором есть шаболнизация и в них мало html кода в шаблоне.
    1) Можно смотреть элемент массива _SERVER, емнип HTTP_X_REQUESTED_WITH который будет равен XMLHttpRequest
    2) Можно передавать дополнительный параметр, напрмиер ajax=1

    в любом из способов дальше проверяем, если это ajax запрос, то не выводим весь html код который нам не нужен. Но в вашем случае это будет не удобно, лучше вынесите в отдельный пхп файл скрипт обработки ajax.

    Если вы решили использовать всё таки один сркипт, то напишите функцию для удобства, напрмиер
    Код (Text):
    1. function isAjax()
    2. {
    3.     return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest';
    4. }
    для первого способа, или
    Код (Text):
    1. function isAjax()
    2. {
    3.     return isset($_POST['ajax']) && $_POST['ajax']== '1';
    4. }
    для второго.

    дальше вам нужно весь код убирать если Ajax

    что то типа
    Код (Text):
    1. <?php if (!isAjax()) : ?>
    2. <script type="text/javascript" src="http://mysite.ru/jquery-1.7.2.js"></script>
    3. <script type="text/javascript">
    4.       function buy1(that) {
    5.    var count = $(that).closest('form').find('.count').val();
    6.    var buy4 = $(that).val();
    7.    
    8.    $.ajax({
    9.       type: "POST",
    10.       data: "count="+count+"&buy0="+buy4+"&hbdgvffvetvfgdvgfvdgvfgdvghfvdghvfghdv=fbhabfhbshfbhsbfh",
    11.       url: 'http://mysite.ru/engine/modules/shop/index.php',
    12.       success: function(data) {
    13.          alert(data);
    14.       }
    15.    });
    16. }
    17. </script>
    18. <?php endif ?>
    19. <?php
    20. if(isset($_POST['buy0']))
    21. {
    22. include('pokupka.php');
    23. }
    24. ?>
    25. // ну и ниже тоже убирать