Как отправить одну HTML-форму на сервер OneSignal и другой сервер - PullRequest
0 голосов
/ 04 января 2019

У меня есть форма, которую необходимо отправить в OneSignal, а затем в базу данных mySql на другом сервере

<form action="AppPushUserOne.php" method="post">
    <textarea class="form-control" id="Message" name="Message" rows="5" placeholder ="Please insert your Incident and Deployment location here..."></textarea>
    <br>
    <button type="submit" class="btn btn-success btn-lg btn-block">Send Push Notification Message</button>
    <button onclick="postTimeEvent();" class="btn btn-success btn-lg btn-block">Send DB</button>
</form> 

Кнопка «Отправить» переходит в OneSignal, а вторая кнопка - в базу данных mySql на другом сервере.,Как бы я совместил эти две кнопки?Я не думаю, что было бы разумно добавить type = "submit" и onclick = "postTimeEvent (); к той же кнопке.

php Я использую

    <?php                           
        function sendMessage($message){

            $content = array(
                "en" => $message
            );

            $headings = array(
                "en" => 'Pembina User here'
            );

            $fields = array(
                'app_id' => "be8a65fa-xxxx-xxxx-xxxx-xxxxxxxxxxx",
                'ios_badgeType' => 'SetTo',
                'ios_badgeCount' => '1',
                'included_segments' => array('All'),
                'headings' => $headings,
                'contents' => $content
            );

            $fields = json_encode($fields);

            print("\nJSON sent:\n");
            print($fields);

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                    'Content-Type: application/json; charset=utf-8',
                    'Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
                )
            );
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_HEADER, FALSE);
            curl_setopt($ch, CURLOPT_POST, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

            $response = curl_exec($ch);
            curl_close($ch);

            return $response; 
        }

        $response = sendMessage($_POST['Message']);

        $return["allresponses"] = $response;
        $return = json_encode( $return);

        print("\n\nJSON received:\n");
        print($return);
        print("\n");
    ?>

js форму Яиспользуя

    <script>
        function postTimeEvent() {
            var event_log = document.getElementById("Message").value;
            var dataString = 'event_log1=' + event_log;
            if (event_log == '')
            {
                alert("Please Fill All Fields");
            }
            else
            {
                $.ajax({
                    type: "POST",
                    url: "ajax.php",
                    data: dataString,
                    cache: false,
                    success: function(html) {
                        alert(html);
                    }
                });
            }
            return false;
        }       
    </script>

1 Ответ

0 голосов
/ 06 января 2019

В идеале, ваш PHP-код в AppPushUserOne.php должен заботиться об отправке того же сообщения в вашу БД MySQL.Вы можете сделать это, просто добавив код из вашего ajax.php файла в AppPushUserOne.php, или вы можете использовать curl в POST данные в ajax.php, как только вы закончите отправку их в OneSignal.

Однако, если вы хотите сделать это с помощью JavaScript, вам придется вызвать функцию postTimeEvent() до отправки формы, в противном случае вызов AJAX для ajax.php может не сработать.Для этого введите id для вашей form (например, myForm), установите type="button" для своей кнопки, и, как только вызов AJAX будет успешным, submit ваша форма.

<form id="myForm" action="AppPushUserOne.php" method="post">
    <textarea class="form-control" id="Message" name="Message" rows="5" placeholder ="Please insert your Incident and Deployment location here..."></textarea>
    <br>
    <button type="button" onclick="postTimeEvent();" class="btn btn-success btn-lg btn-block">Send Push Notification Message and Send to DB</button>
</form>

<script>
    function postTimeEvent() {
        var event_log = document.getElementById("Message").value;
        var dataString = 'event_log1=' + event_log;
        if (event_log == '')
        {
            alert("Please Fill All Fields");
        }
        else
        {
            $.ajax({
                type: "POST",
                url: "ajax.php",
                data: dataString,
                cache: false,
                success: function(html) {
                    alert(html);
                    $('#myForm').submit();
                }
            });
        }
        //return false;
    }       
</script>
...