javascriptphpajaxcontent-management-system

Cannot put checking in ajax


I have a bootbox dialog with a button. There is a problem with the 1st ajax function in there. I would like to check whether the value returned from model and controller is 0 or 1 and stop the callback function from posting data to database if the value it returns is 1. However, once I put this check , it doesn't work before putting the first ajax function with the check, everything works perfectly. Now, I cannot even save any data to the database.

buttons: {
    success: {
        label: "Save",
        className: "btn-success",
        callback: function() {
            console.log('save');
            console.log($('#re_confirm')[0].checked);
            ...
            ...
            ...

            var check;
                $.ajax({
                url: "<?php echo base_url(); ?>index.php/home/check_occupied",
                type: "post", // To protect sensitive data
                data: {
                        "table_id" : valueid2,
                        "session_id" : table_column_14,
                    //and any other variables you want to pass via POST
                      },
                success:function(response){
                // Handle the response object
                    check=response;
                },
            });

           if(check!=0)
            return;

           $.ajax({
                url : "<?php echo base_url(); ?>index.php/home/update_booking",
                type: "post",
                data: {
                   "table_id" : $('#idtable').val(),
                },
                success: function(response){
                ...
                }
            });
        }
    },
...
,
...
}
});

Solution

  • $.ajax is asynchronous

    your code is easily fixed though:

    $.ajax({
        url: "<?php echo base_url(); ?>index.php/home/check_occupied",
        type: "post", // To protect sensitive data
        data: {
            "table_id": valueid2,
            "session_id": table_column_14,
            //and any other variables you want to pass via POST
        },
        success: function(response) {
            // Handle the response object
            if (response == 0) {
                $.ajax({
                    url: "<?php echo base_url(); ?>index.php/home/update_booking",
                    type: "post",
                    data: {
                        "table_id": $('#idtable').val(),
                    },
                    success: function(response) {
                        ...
                    }
                });
            }
        },
    });