5

I post data to a PHP backend using jQuery $.ajax:

$.ajax({
    url: "server.php",
    method: "post",
    data: {
        testVariable: true
    }
});

On the server side I tried die(gettype($_POST["testVariable"])); which returns string.

I'm trying to save the JSON data posted from Javascript to a MySQL database, but boolean values get quoted which is not what should happen.

What gets inserted is {"testVariable": "true"} and what I need is {"testVariable": true}. How do I accomplish this?

5
  • 5
    This is normal behaviour, you can really only send strings, not booleans, so booleans are converted to strings when posted Commented Nov 16, 2016 at 13:56
  • 1
    on the php side, you can use json_decode php.net/manual/en/function.json-decode.php to parse the incoming data into an array or object. Commented Nov 16, 2016 at 14:01
  • 1
    or just send 1 as true and 0 as false in jor ajax, and convert it in your php to boolean. (boolean true is original an 1 and false a 0 (binary)) Commented Nov 16, 2016 at 14:22
  • Yes send 1 or 0 Commented Nov 16, 2016 at 14:31
  • 1
    Possible duplicate of Bool parameter from jQuery Ajax received as literal string "false"/"true" in PHP Commented Nov 16, 2016 at 14:35

1 Answer 1

2

This is the expected behavior. On PHP you need convert the string to boolean, if you need, using a ternary or the method you like. Or you can send 1/0 to represent boolean state.

Converting like that:

$testVariable = ($_POST['testVariable'] === 'true'); //return the boolean evaluation of expression
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.