Search code examples
phpjqueryajaxapiasana

Receive data from API and send it to another page via AJAX


I'm receiving data from an API (asana) when an event was made in my workspace via a POST method in a file called asanatarget.php

The data is correct and i can store it in file when received. Looks like that:

    {"events":"resource":xxx,"user":xxx,"type":"story","action":"added","created_at":"2019-02-20T14:48:09.142Z","parent":xxx}]}

In the same file I send the data to a new file with AJAX with GET method:

asanatarget.php

<?php 
    if(isset($_SERVER['HTTP_X_HOOK_SECRET'])) {
        $h = $_SERVER['HTTP_X_HOOK_SECRET'];
        header('X-Hook-Secret:' . $h);
        exit;
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    </head>
    <body>
<?php
 $input = file_get_contents('php://input');

    if ($input) {
        $entries = json_decode(file_get_contents('php://input'), true);
        file_put_contents('targetasanaDATA' . time() . '.txt', json_encode($entries));
?>
    <script>
        $( document ).ready(function() {
            $.ajax({
                type: "GET",
                url: "/asanawebhook", // Working with laravel, the route is well defined
                data: <?php echo json_encode($entries); ?>,
                dataType: "json",

                success: function(response){ 
                    console.log("success " + response);
                },

                error: function(jqXHR, textStatus, errorThrown) {   // What to do if we fail
                    console.log(JSON.stringify(jqXHR));
                }

            });
        });  
    </script>


<?php 
} 

?>
</body>
</html>

When i'm directly loading asanatarget.php with test data, it's working fine and the data is passed to /asanawebhook but when the data is passed directly from the api, it's not working. I checked and the data is always correct


Solution

  • Your PHP script generates only a HTML page (basically, a text).

    The javascript can be interpreted and executed by a browser. But if no browser reads this page and execute it, nothing happens. PHP generates a webpage, nobody reads it, and things ends here.

    You can use PHP too to send data via POST. You can build your query with http_build_query() and use file_get_contents().