Bonjour,
Je rencontre des difficultés avec une requete ajax qui doit envoyer un fichier file et deux variables.*

$('#image--1').change(function (e) { 
    e.preventDefault();
    var img = new FormData();    
    img.append( 'media', $('#image--1')[0].files[0]);    
    let idarticle = $('#article').val();
    uploadphoto(img,1,idarticle)
});

function uploadphoto(media,numphoto,idarticle)
{

    console.log('num : ' + numphoto);
    console.log('idarticle : ' + idarticle);
    $.ajax({
        type: "POST",
        url: "ajax/change-photo.php",
        processData: false,
        contentType: false,
        data: {
            media:media,
            numphoto:numphoto,
            idarticle:idarticle
        },
        dataType: "JSON" 
    }).done(function (ret){
        console.log(ret.responseText)
    }).fail(function(ret){
        console.log(ret.responseText)
    })
}

Ce que je veux

Je souhaiterai envoyer mes données à mon script php

Ce que j'obtiens

retour dui fail

<br />
<b>Warning</b>:  Undefined array key "numphoto" in <b>/srv/web/gestionnel/public/ajax/change-photo.php</b> on line <b>5</b><br />
<br />
<b>Warning</b>:  Undefined array key "idarticle" in <b>/srv/web/gestionnel/public/ajax/change-photo.php</b> on line <b>6</b><br />

1 réponse


Mimiclcl
Réponse acceptée

L'erreur "Undefined array key" dans votre requête AJAX se produit lorsque vous essayez d'accéder à une clé d'un tableau qui n'est pas définie. Ici, les clés "numphoto" et "idarticle" ne sont pas définies dans votre tableau de données.

  • Assuez-vous que les variables "numphoto" et "idarticle" sont correctement définies avant d'effectuer la requête AJAX. Vous pouvez utiliser la fonction console.log() pour afficher les valeurs de ces variables et vous assurer qu'elles sont correctement récupérées.

  • Très important: Les noms des clés dans votre tableau de données doivent correspondrent aux noms des variables dans votre script PHP.

  • Vérifiez que les données que vous essayez d'envoyer via la requête AJAX sont correctement formatées. Ici, vous utilisez un objet FormData pour envoyer le fichier et vous ajoutez les variables "numphoto" et "idarticle" à ce FormData. FormData doit ^etre correctement configuré et les données orrectement ajoutées.

Une proposition de correction

$('#image--1').change(function (e) {
e.preventDefault();
var img = new FormData();
img.append( 'media', $('#image--1')[1].files[1]);
let idarticle = $('#article').val();
uploadphoto(img, 1, idarticle);
});

function uploadphoto(media, numphoto, idarticle) {
console.log('num : ' + numphoto);
console.log('idarticle : ' + idarticle);
$.ajax({
type: "POST",
url: "ajax/change-photo.php",
processData: false,
contentType: false,
data: media,
dataType: "JSON"
}).done(function (ret) {
console.log(ret.responseText);
}).fail(function(ret) {
console.log(ret.responseText);
});

Seb_Miao
Auteur

Bonjour merci pour ton retour, tout fonctionne maintenant .
Merci