0

I'm trying to make a request via JS to my own PHP REST API. It seems like the data which is send by the JS doesn't make it to the PHP API.

JS Code:

var data = {
    'name': 'kevin'
};

var request = new XMLHttpRequest();


request.open("POST", "http://192.168.64.2/testJsRequest.php", true);
request.setRequestHeader('Content-type', 'application/json');

request.onreadystatechange = function() {
    if (request.readyState == 4 && request.status == 200) {
        console.log("RESPONSE" + request.responseText);
    }
}

request.send(data);

PHP Code

           <?php
        $responseStatus = '200 OK';
        $responseText = $_POST['name'];
        
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Headers: *');
        header($_SERVER['SERVER_PROTOCOL'].' '.$responseStatus);
        header('Content-type: application/json; charset=utf-8');
        
        echo json_encode($responseText);
6
  • 3
    You can use your browser's developer tools to see what was send to the API. Commented Feb 9, 2022 at 22:26
  • 1
    You need to convert data to JSON with JSON.stringify() Commented Feb 9, 2022 at 22:34
  • You need to handle the pre-flight OPTIONS request. Supporting CORS is more than just responding with Access-Control-Allow-* headers Commented Feb 9, 2022 at 22:34
  • 3
    Note that PHP doesn't parse JSON requests into $_POST. Commented Feb 9, 2022 at 22:35
  • To elaborate on @Barmar's comment, it should be request.send("name=kevin") or to use your existing object request.send(new URLSearchParams(data)). You should also remove your content-type header Commented Feb 9, 2022 at 22:35

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.