2

I’m trying to evaluate the value of id, which should be passed in the POST from jQuery to PHP.

The call is returning {'id':'99'}, which is ok if id is not equal to 0. I wonder why ($x == "0") is not being evaluated to true in my PHP function.

Any help would be greatly appreciated! Thanks in advance.

jQuery:

$( document ).ready(function() {
    $.ajax({
        url: '/more.php',
        type: 'POST',
        data: JSON.stringify({"id" : "0"}),
        success: function(data) {
            $("body").append(data);
        }
    });
});

PHP:

if (isset($_POST['id'])) {
        $con=mysqli_connect("localhost","user","pass","schema");
        getmore($_POST['id']);

        function getmore($x) {
         if ($x == "0") {
          $sqldata = mysqli_query($con,"SELECT * FROM IRCLOG WHERE DATETIME >= date_sub(curdate(),interval 1 day)");
         }
         else {
          $sqldata = mysqli_query($con,"SELECT * FROM IRCLOG WHERE DATETIME >= date_sub(curdate(),interval 1 day)");
         }
           // your business logic
          $rows = array();
          while($r = mysqli_fetch_array($sqldata)) {
             $rows[] = $r;
          }

          echo json_encode($rows);
        }
    }
else {echo "{'id':'99'}";}
3
  • what value you get when you echo $x? Commented Feb 18, 2014 at 4:06
  • did you try if (is_numeric($x) && $x === 0)) or compare 0 without "(quotes) Commented Feb 18, 2014 at 4:08
  • 1
    function getmore defined inside if ? Commented Feb 18, 2014 at 4:08

3 Answers 3

2

I think it might be because PHP is converting the $_POST['id'] to integer. Try the following:

function getmore($x) {
    $x = intval( $x );
    if ($x == 0) {

Another reason might be that your AJAX is sending the data incorrectly. Try using:

data: {id : "0"}

in the AJAX request.

The data setting in AJAX call accepts either PlainObject or String argument. From the docs:

It is converted to a query string, if not already a string. It's appended to the url for GET-requests. See processData option to prevent this automatic processing. Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting (described below).

Sign up to request clarification or add additional context in comments.

Comments

1

Why don't you use

$(document).ready( function() {
    var id_main = 0;
        $.ajax ({
            type: "POST",
            url: "/more.php",
            data: { id: id_main },
    });
});

Comments

0

send your data like this. data: {"id" : "0"},

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.