Typically I will not delete the record but will set an Inactive or Deleted bit on the record and exclude those from queries, unless the data is sensitive in nature.
I do this after years of experience of users wanting to retrieve deleted data, even years from when the record was originally deleted.
On larger datasets I'll then have a task run at a specified timeframe that will go through and cleanup/delete all of the Inactive records.
For posting data, you could check connection status (or $.ajax error callback) and if the client cannot access then store the data locally using localStorage [1]. When the connection becomes available again then post all data from localStorage to the end-point and clear out local store.