'Ajax form doesn't submits data to php on first click but submits on second click

I have a form that submits through ajax. At first click it sends the request to php but doesnt send post variables and however when i submit form for second or third time it submits the form and gets the success response. The ajax request doesn't fail on first click it just doesnt send data to php.When i check the network tab request fields show up there on the first click and have correct values but doesnt reach php. Here is my code

jQuery("#bidding-form").on('submit', function(e) {
    var request_english_level = jQuery('#request_english_level').val();
    var job_title = jQuery('#job_title').val();
    var request_type = jQuery('#request_type').val();
    var estimated_hours = jQuery('#estimated_hours').val();
    var designation = jQuery('#designation').val();
    var service_type = jQuery('#service_type').val();
    var budget = jQuery("#budget").val();
    var user_id = jQuery('#user_id').val();
    var locations = jQuery('#location').val();
    var payment_terms = jQuery('#payment_terms').val();
    var application_no = jQuery('#application_no').val();
    var deadline_apply = jQuery('#deadline_apply').val();
    var close_date = jQuery('#close_date').val();
    var delivery_deadline = jQuery('#delivery_deadline').val();
    var experience = jQuery('#consultant_experience').val();
    var description = jQuery('#request_description').val();
    var formdata = new FormData();
    var length = jQuery(".attachment")[0].files.length;
    for (i = 0; i < length; i++) {
        formdata.append('file[]', jQuery(".attachment")[0].files[i]);
    }
    formdata.append('action', 'save_bid_info');
    var checked_skills = []
    jQuery("input[name='request_skills[]']:checked").each(function() {
        //checked_skills.push(parseInt(jQuery(this).val()));
        formdata.append('request_skills[]', parseInt(jQuery(this).val()));
    });
    var languages = []
    jQuery("input[name='languages[]']:checked").each(function() {
        //languages.push(parseInt(jQuery(this).val()));
        formdata.append('languages[]', parseInt(jQuery(this).val()));
    });
    formdata.append('designation', designation);
    //  formdata.append('request_skills', checked_skills);
    formdata.append('request_type', request_type);
    formdata.append('estimated_hours', estimated_hours);
    formdata.append('service_type', service_type);
    formdata.append('delivery_deadline', delivery_deadline);
    formdata.append('job_title', job_title);
    formdata.append('locations', locations);
    formdata.append('request_type', request_type);
    formdata.append('payment_terms', payment_terms);
    formdata.append('application_no', application_no);
    formdata.append('deadline_apply', deadline_apply);
    formdata.append('close_date', close_date);
    formdata.append('experience', experience);
    formdata.append('description', description);
    formdata.append('budget', budget);
    //  formdata.append('languages', languages);
    formdata.append('request_english_level', request_english_level);
    e.preventDefault();
    jQuery.ajax({
            url: ajax_url,
            type: 'post',
            dataType: 'json',
            contentType: false,
            cache: false,
            processData: false,
            data: formdata,
            beforeSend: function() {
                jQuery(".loader").show();
            },
            complete: function(data) {
                jQuery('.loader').hide();
            }
        })
        .done(function(response, textStatus, jqXHR) {
            if (response.success == true) {
                jQuery(".ajax-processor").hide();
            } else {
                jQuery(".ajax-processor").find('p').html(response.msg);
            }
        })
        .fail(function(jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
        })
});
// PHP CODE
if(isset($_POST['budget']) && !empty($_POST['budget']))
{
   // on second click this is executed
}
else
{
  // on first click this is executed
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source