выполнение php-скрипта при нажатии кнопки html

#javascript #php #html #ajax #button

#javascript #php #HTML #ajax #кнопка

Вопрос:

У меня есть PHP-код, который делает кучу вещей, поэтому, чтобы все было просто, я удалил из него ненужный код.

В приведенном ниже блоке if мне нужно создать всплывающее окно с этим $message на нем, и на нем должна быть кнопка ok и cancel . Как только я нажму ok кнопку, мне нужно выполнить какой-нибудь другой php-код в том же файле, если это возможно (или это может быть и другой PHP-файл), и если я нажму cancel кнопку, то он ничего не должен делать.

Ниже мой test.php файл-

 <?PHP
    // ..... some other code

    if (!isset($_SESSION['admin'])) {
        $text = "hello world";
        // create a pop up window with $message on it along with "ok" and "cancel" button
        echo "<script type='text/javascript'>confirm('$text');</script>";
    }

    // ..... some other code
?>
  

У меня может быть либо JS modal , либо HTML/CSS modal все, что угодно, работает до тех пор, пока я могу выполнять некоторые действия с ok и cancel кнопкой. Возможно ли это сделать? Я попытался осмотреться, но не смог понять, как это сделать.

Обновить:

Ниже приведен мой обновленный hello.php файл, в котором я использовал предложение Оливера. Я попробовал с приведенным ниже кодом, где у меня есть функция javascript secondUser , но она показывает всплывающее окно, как Sad :( - invalid session только я нажимаю ok кнопку.

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" type="text/javascript"></script>
<script>
function secondUser() {
    $.post( "ajax/test.php", function( data ) {
        if (data.success) {
            alert(data.message);
        } else {
            alert("Sad :( - invalid session");
        }
    });
}
</script>

<?PHP
    // ..... some other code

    if (!isset($_SESSION['admin'])) {
        $text = "hello world";
        // create a pop up window with $message on it along with "ok" and "cancel" button
        echo "<script type='text/javascript'>if (confirm('$text')) { secondUser(); };</script>";
    }

    // ..... some other code
?>
  

Теперь я не могу понять, что не так в моем приведенном выше коде? Я просто хочу выполнить свой test.php с использованием ajax в моем другом php-файле.

Комментарии:

1. таким образом, вы выполняете вызов Ajax или отправляете форму или переходите по ссылке.

2. кодовый блок в том же файле? вероятно, нет, но в другом php-файле вы могли бы просто поместить простой терней на confirm и просто добавить location.href указание на него. если это post, вам понадобится форма или создайте xmlhttprequest с помощью post.

3. @epascarello Мне интересно, можете ли вы привести пример, как это сделать?

4. @user1950349 вы имеете в виду троичный? это просто сокращение, если еще confirm() ? redirect : ''

5. @kevin Я хотел сказать, можете ли вы предоставить мне пример на скрипке 3v4l.org Немного кода будет работать.

Ответ №1:

Вы можете использовать библиотеку jQuery для отправки запроса с использованием AJAX. Первым делом регистрируется кнопка.

 <button id="cool-btn">My button</button>
  

Как только кнопка будет запущена, вы можете добавить этот скрипт в html или JS-файл.

 <script>
$(document).ready(function() {
    $("#cool-btn").click(function(){
        attemptRequest();
    });
});
</script>
  

Теперь вам нужно создать функцию с именем attemptRequest, которая отправляет AJAX-запрос для вас в вашу PHP-форму.

 function attemptRequest() {
    $.post( "ajax/test.php", function( data ) {
      if (data.success) {
          alert(data.message);
      } else {
          alert("Sad :( - invalid session");
      }
    });
}
  

Затем вам нужно выполнить проверку сеанса в вашем PHP-скрипте, вызываемом test.php в папке ajax и вернуть соответствующие данные.

  $data = new stdClass();
 $data->success = false;
 $data->message = "";
 if (isset($_SESSION['pageadmin'])) {
     $data->message = "hello world";
     $data->success = true;
 }
 
 return json_encode($data);
  

Надеюсь, это полезно 🙂

Комментарии:

1. Привет, Оливер, я попробовал ваш код, и в разделе исходные тексты (проверка) я вижу следующий код При нажатии кнопки Ok, он говорит, Sad :( - invalid session и он не входит в second_user.php файл, хотя он входит в secondUser() функцию javascript. Мне интересно, какие изменения мне нужно внести в скрипку, чтобы она попала внутрь second_user.php файла.

2. Привет, пользователь (вам следует изменить свое имя 🙂 ) Не могли бы вы показать мне, как теперь расположены ваши файлы?

3. Я уже создал скрипку, и это та же настройка, что и у меня. У меня просто есть только один php-файл (admin.php) , и в этом php-файле у меня есть все (php js) . Я знаю, что это не лучшая практика, но я попытаюсь изменить структуру позже. Я также обновил вопрос тем, что я пробовал.

4. Я также обновил свой вопрос подробностями того, что я пробовал.

5. Привет @user1950349 для этого примера, не могли бы вы, пожалуйста, разделить файлы PHP и JS / HTML соответственно? Я с удовольствием научу вас делать это в одном файле в другом вопросе, как только мы освоим основы работы. Извиняюсь за поздний ответ, по иронии судьбы, я обычно нахожусь в stackoverflow в рабочие дни 🙂