Quiero enviar la variable data2 a mi secuencia de comandos PHP, pero con el siguiente código obtengo una matriz vacía de $_POST en mi controlador
var data2 = { donation: $("#donationform").serialize(), allocation: $("#allocationform").serialize(), allocationerrors: { msg: validation() }, datatoform: new FormData(this) }; $.ajax({ url: url, type: "POST", dataType: "JSON", data: data2, processData: false, contentType: false, success: function(data, status) {}, error: function(xhr, desc, err) {} });El problema es que no puede enviar FormData binario en un objeto. Tienes que hacerlo al revés; es decir. agregue los datos al objeto FormData y envíe eso en la solicitud. Prueba esto:
var formData = new FormData(this); formData.append('donation', $("#donationform").serialize()); formData.append('allocation', $("#allocationform").serialize()); formData.append('allocationerrors', JSON.stringify({ msg: validation() })); $.ajax({ url: url, type: "POST", data: formData, processData: false, contentType: false, success: function (data, status) { }, error: function (xhr, desc, err) { } });