Bonjour,

J'ai créer un script qui me permet d'envoyer les formulaire en AJAX et je récupère les données en JSON.

Je me retrouve donc avec un tableau comme celui-ci :

Object { uname: Object, mail: Object, psw: Object }

Chaque Object à l'intérieur (comme le uname) comporte une seule ligne pour le moment :

mail: Object
    e_msg: "Veuillez renseigner une adresse mail"
psw: Object
    e_msg: "Veuillez renseigner un mot de passe"
uname: Object
    e_msg: "Veuillez renseigner un pseudo"

Voilà pour la base

Ce que je fait

Actuellement voil ce que j'effectue sur mon tableau de données

var msg = JSON.parse(ariel_xhr.response)
var ref = msg.ref

console.log(ref)

for(var reffer in ref) {
    console.log(reffer)
}

Ce qui me donne : uname, mail, psw.

Autremement dit, le nom des Object à l'intérieur, et moi j'aimerais pourvoir récupérer leurs données comme en PHP avec foreach

3 réponses


betaWeb
Réponse acceptée

Salut,

Déjà, lors de ton appel AJAX, précise le Content-type de la réponse (si tu utilises la méthode $.ajax() de jQuery, il suffit de rajouter une clé responseType: 'json'. De cette façon, le navigateur parsera le JSON directement.
Ensuite, il ne te restera plus qu'à faire :

for (let item in response) {
    if (response.hasOwnProperty(item)
        console.log(item, response[item].e_msg); // response[item].e_msg étant le message que tu cherches à récupérer ;)
}
JeremieMeunier
Auteur
Réponse acceptée

La solution finale :

me.classList.remove('load')
var res = ariel_xhr.response
var msg = JSON.parse(res)
var ref = msg.ref

for(var reffer in ref) {

    var refferDock = me.querySelector('[data-ref="' + reffer + '"]')
    var err = document.createElement('p')
    err.classList.add('form-msg')
    err.classList.add('error')
    refferDock.appendChild(err)

    err.innerText = ref[reffer].e_msg
}

Salut

Je suis pas sûr d'avoir compris te demande, si c'est pour récupérer la valeur de ref avec la clef reffer, fait:

    console.log(ref[reffer]);

Est-ce bien ta demande ?