I've been working on this for hours. I have a basic form that submits the data and feature image for a store i'm building.
I'm sending data from view to controller using ajax, but the $_POST array is always empty in the controller.
view:
<form method="POST" id="newproducts" enctype="multipart/form-data">
<div class="form-group">
    <label class="control-label">Product Name</label>
    <input type="text" name="product" class="form-control" placeholder="Enter product name">                                
</div>
<div class="form-group">
    <label class="control-label">Prodct Category</label>
    <select name="category" class="form-control" id="mycat">
        <option value=""></option>
        <option value="1">Dummy Category 1</option>
        <option value="2">Dummy Category 2</option>
    </select>
</div>
<div class="form-group">
    <label class="control-label">Available Stock</label>
    <input type="number" name="stock" class="form-control" placeholder="Number of Available units">
</div>
<div class="form-group">
    <label class="control-label">Product Price</label>
    <input type="number" class="form-control" name="price" placeholder="Price without the (R)">
</div>
<div class="form-group">
    <label class="control-label">Product Description</label>
    <textarea name="description" placeholder="Enter Prodct Description" class="form-control"></textarea>
</div>
<div class="form-group">
    <label class="control-label">Feature Image</label>
    <input type="file" name="feature" id="feature">
    <div class="error"></div>
    <div class="clearfix"></div>
    <p> </p>
    <div id="preview"></div>
</div>
<div class="form-group">
    <button type="submit" class="btn btn-success" name="add">Add Product</button>
</div>
<div class="form-group">
    <input type="image" src="view/assets/images/ajax-loader.gif" style="display: none;" name="loader">
</div>
product.js
I have left out the validation just to show only the relevant code
var formData = new FormData($('#newproducts')[0]);
            $.ajax({
                type : "POST",
                url  : "controller/products.php",
                // data : {product :product, category:category,stock:stock,price:price,description:description,feature:feature},
                data :  formData,
                cache : false,
                contentType: true,
                processData:false,
                async : false,
                traditional: true,
                beforeSend : function(){
                    $('button[type="submit"][name="add"]').html("Please Wait...");
                    $('input[type="image"][name="loader"]').css('display','block');
                },
                success : function(results){
                    $('button[type="submit"][name="add"]').html("Add Product");
                    $('input[type="image"][name="loader"]').css('display','none');
                    if(results == "ok"){
                        $('#results').removeClass('error');
                        $('#results').addClass('success');
                        $('#results').html('Product added successfully...');
                    }else{
                        $('#results').removeClass('success');
                        $('#results').addClass('error');
                        $('#results').html(results);
                    }
                }
            });
        return false;   
    }
When I sent data like this : data : {product :product, category:category,stock:stock,price:price,description:description,feature:feature}, everything works fine, but the only challenge I have with that is sending the image data for upload.
my controller :
I have just done a simple var_dump to see if does it gets data
var_dump($_POST)
gives :
array(0) { }
 
     
     
    