Функция isset кнопки не работает в ajax jquery - PullRequest
1 голос
/ 28 марта 2020

У меня есть форма с 2 кнопками send_btn & receive_btn и ввод текста. Что я хочу сделать, так это то, что если щелкнуть send_btn, то сообщения будут отображаться с правой стороны (т.е. с плавающей точкой справа), а когда нажата receive_btn, тогда сообщения будут отображаться с левой стороны (то есть с плавающей точкой слева). Я использовал ajax jquery для вызова файла php, но если я установил условие if, чтобы проверить нажатие кнопки, то нет вывода, нет ошибки. Вот мой код

HTML -

<div class="msgpostsec">
        <form id="msgform" action="upload.php" method="POST">
            <label for="date">Date:</label>
            <input type="date" id="date" name="date" style="border-radius:5px;border:1px solid #5B5151;margin-bottom:12px;"/> <br />
            <label for="time">Time:</label>
            <input type="time" id="time" style="border-radius:5px;border:1px solid #5B5151;" name="time"/><br /><br />
            <label for="message">Message</label>
            <input type="text" id="message" name="msg_txt"/>
            <input type="submit" id="send_btn" name="send_btn" value="Send" class="btn btn-success" style="border-radius:5px;" />
            <input type="submit" id="receive_btn" name="receive_btn" value="Receive" class="btn btn-warning" style="border-radius:5px;" />
        </form>
    </div>

PHP -

<?php 
session_start();
// session_destroy();       
            $msg_array = array(
                'msgtosend' => $_POST['msg_txt'],   
                'msgtoreceive' => $_POST['msg_txt'],    
                'date' => $_POST['date'],   
                'time' => $_POST['time']    
            );
            $_SESSION['send_msg'][] = $msg_array;

        if (!empty($_SESSION['send_msg']) && isset($_SESSION['send_msg'])) {
            foreach ($_SESSION['send_msg'] as $keys => $values) 
            {
                 $output='<p>'.$values["msgtosend"].'</p>';         
                $output2='<p>'.$values["msgtoreceive"].'</p>';          
}
}
    if (isset($_POST['send_btn'])) {
        echo $output;
    } else if (isset($_POST['send_btn'])){
        echo $output2;
    }
?>

AJAX JQUERY -

$(document).ready(function () {
 $('#msgform').on('submit',(function(e) {
        e.preventDefault();
            var post_url = $(this).attr("action");
            var request_method = $(this).attr("method");
            var form_data = $(this).serialize();
        $.ajax
        ({
            url: post_url,
            type: request_method,
            data:form_data,
            success: function(response)
            {
            $("#out_msg").html(response);
            console.log(response);
            },
            error: function() 
            {
            },        
        });
    });
});

1 Ответ

1 голос
/ 28 марта 2020

Значение кнопки не будет отправлено через AJAX, потому что при submit() через serialize(), jquery не будет знать о нажатой кнопке. Что вы можете сделать, это добавить скрытое поле и зарегистрироваться PHP

<input type="hidden" name="hidden_field" id="hidden_field" value="form_check">

<?php
if (isset($_POST['hidden_field']) && $_POST['hidden_field'] === 'form_check') {
   #proceed
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...