Front End Entry Form - File/asset field not saving when ajax submitted
Finally found the answer after much time spent on it.
The $(this).serialize() loses the file input - and can't submit.
Updated ajax submit to
$.ajax({
    type: 'POST',
    url: url,
    data: new FormData(this) ,
    dataType : 'json', // changing data type to json
    processData: false,
    contentType: false,        
    success: function (response) { // here I'm adding data as a parameter which stores the response
        console.log(response); // instead of alert I'm changing this to console.log which logs all the response in console.
    }
});