2 votes

Ajax & php: Objet FormData

Je suis en train d'essayer d'envoyer des données à PHP via jQuery AJAX. Ça ne fonctionne que si j'envoie les données de cette manière :

    type: 'POST',
    dataType: 'json',
   //processData: false,
   //contentType: false,
     url: 'productEdit.php',
     data: {'data_spa':arr, 'id': id, 'table': table_name, 'insert': values}

Mais chaque fois que j'essaie d'envoyer un objet FormData(), ça cesse de fonctionner. Cependant si j'envoie juste le form_data (en décommentant processData et contentType) ça fonctionne :

type: 'POST',
dataType: 'json',
processData: false,
contentType: false,
url: 'productEdit.php',
data: form_data

Tout ce que j'essaie de faire est d'envoyer les valeurs et le form_data en tant que JSON, comme ceci :

data: (form_data, {'data_spa':arr, 'id': id, 'table': table_name, 'insert': values})

Et en PHP, il devrait recevoir les données de cette manière :

$arr = $_POST['data_spa'];
$image_file = $_FILES['file']['name']

En passant, je crée l'objet FormData de cette manière :

var file_data = $('#imageProduct').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);

J'espère que vous pourrez m'aider à résoudre ce problème.

2voto

Gian Tomakin Points 187
var file_data = $('#imageProduct').prop('files')[0];
var form_data = new FormData();
form_data.append('fichier', file_data);
form_data.append('data_spa', arr);
form_data.append('id', id);
form_data.append('table', table_name);
form_data.append('insert', values);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X