¿Cómo agrego parámetros POST adicionales a la carga de archivos ajax?

Estoy usando javascript y php de carga de archivos ajax para cargar una imagen. Funciona satisfactoriamente con $ _FILES pero necesito enviar algunos datos adicionales al script de procesamiento. El formulario HTML se parece a:

  

<input type="file" class="saveImage" name="image1" value="" id="" additional_info="some data" />

Necesito poder pasar un ID de variable y algunos otros datos, llamarlo “additional_data” al script php, luego procesarlo en mi script php usando $additional_data = $_POST['additional_data'] . El javascript que estoy usando es:

   $(document).ready(function (e) { $("#image1").on('submit',(function(e) { e.preventDefault(); $("#message").empty(); $('#loading').show(); var DATA=$(this).val(); var ID=$(this).attr('id'); var ADDL=$(this).attr('additional_data'); var dataString = 'image1='+DATA+'&id='+ID+'&additional_info='+ADDL; $.ajax({ url: "uploadFile.php", type: "POST", // data: new FormData(this), data: new FormData(this,dataString), contentType: false, cache: false, processData:false, success: function(data) { $('#loading').hide(); $("#message").html(data); } }); })); });  

No envía el dataString, solo la matriz FILES.

Yo también quería hacer lo mismo. Aquí está mi solución:

La parte JS:

 var file_data = this.files[0]; file_data.name = idaviz +'.pdf'; var form_data = new FormData(); form_data.append("file", file_data); form_data.append('extraParam','value231'); console.log(file_data); console.log('here'); var oReq = new XMLHttpRequest(); oReq.open("POST", "ajax_page.php", true); oReq.onload = function (oEvent) { if (oReq.status === 200) { console.log('upload succes',oReq.responseText); } else { console.log("Error " + oReq.status + " occurred when trying to upload your file.
"); } }; oReq.send(form_data); });

La parte de PHP:

 echo $_REQUEST['extraParam']; //this will display "value231" var_dump($_FILES['file']); //this will display the file object 

Espero eso ayude.

Se puede encontrar información adicional sobre los parámetros adicionales en formData aquí !

Espero que te entienda bien. Quizás este fragmento te ayude a:

 var formData = new FormData(); formData.append("image1", fileInputElement.files[0]); formData.append("ID", ID); formData.append("ADDL", ADDL); 

Y luego establezca esta variable formData como datos:

 type: "POST", data: formData, contentType: false,