MHB2011
MHB2011

Reputation: 463

Ajax return wrong result

I have two arrays. 1 is empty and other have 5 items. I want to count them and display it.

i send ajax request like this :

function countTrash()
    {
        $.ajax({
               type: "GET",
               url: "count_trash_delete.php",
               data: "action=1",
               success: function(response){
                          $("#badge3").html(response);
                        }
       });
    }




function countRemove()
    {
        $.ajax({
               type: "GET",
               url: "count_trash_delete.php",
               data: "action=2",
               success: function(response){
                          $("#badge2").html(response);
                        }
       });
    }

My count_trash_delete.php looks like this

if(isset($_GET['action'])) {
    $action = 1;
}else{
    $action = 2;
}

if($action === 1){

    $trash_arr = file_get_contents('trash_bots.json');
    $trash_arr = json_decode($trash_arr);
    $number_of_trashed = count($trash_arr);

    echo $number_of_trashed;

}elseif($action === 2){

    $remove_arr = file_get_contents('remove_bots.json');
    $remove_arr = json_decode($remove_arr);

    if(!empty($remove_arr)){        
    $number_of_removed = count($remove_arr);    
        echo $number_of_removed;        
    }else{
        echo 'Empty';
    }   
}

When i get response both are 5. Which i cant understand.

Upvotes: 0

Views: 42

Answers (1)

T.J. Crowder
T.J. Crowder

Reputation: 1074028

You're asking the page to do the same thing, so it does the same thing. This is the problem code:

if(isset($_GET['action'])) {
    $action = 1;
}else{
    $action = 2;
}

It doesn't matter what the value of $_GET['action'] is in that code, if it's there at all you'll set $action to 1 and if it isn't there you'll set $action to 2. Since you're always passing action, the page always does the same thing.

You probably want to set $action to the value of $_GET['action']:

if(isset($_GET['action'])) {
    $action = (int)$_GET['action'];
}else{
    $action = /*...some appropriate default number...*/;
}

Upvotes: 1

Related Questions