/ / Quelle est la meilleure façon de réécrire ce JSON en données jQuery ()? - javascript, jquery, json, fonction

Quel est le meilleur moyen de réécrire ce JSON sur jQuery data ()? - javascript, jquery, json, fonction

Pour une raison quelconque, j'ai cet énorme pet de cerveau aujourd'hui. >. <

J'ai des données JSON que j'attache à l'utilisation de jQuery .data () qui ressemble à ceci:

$.getJSON("names.php", function(data) {
//generate html string and append to DOM
$.each(data, function(i,item) {
var strHtml;
strHtml += "<img src="/images/" +item.PIC + ".jpg" id="" + item.ID  + "" />";
})
$("body").html(strHtml);

//attach data to image ID
$.each(data, function(i,item) {
$("#" + item.ID).data(item.ID, {
NAME: item.NAME,
PHONE: item.PHONE,
EMAIL: item.EMAIL,
ADDRESS: item.ADDRESS,
...
...
...
});
}
}

Cela fonctionne bien; cependant, il a l'air un peu moche et j'essaye de le nettoyer un peu principalement sur cette partie:

    $.each(data, function(i,item) {
$("#" + item.ID).data(item.ID, {
NAME: item.NAME,
PHONE: item.PHONE,
EMAIL: item.EMAIL,
ADDRESS: item.ADDRESS,
...
...
...
});
}

J'ajoute un tableau d'objets à la valeur de clé. Exemple de http://api.jquery.com/data/ $ ("body"). data ("bar", {myType: "test", count: 40});

Voici ma tentative de le réécrire:

$.each(data, function(i,item) {
$("#" + item.ID).data(item.ID, function(){
$.each(item) {
return i + ":" item[i];
}
})
}

Existe-t-il un moyen plus propre d'écrire cela? J'ai également essayé $ ("#" + item.ID) .data (item.ID, JSON.stringify (data));

Réponses:

2 pour la réponse № 1

Si vous voulez juste que l’élément complet soit ajouté, avec toutes ses propriétés, vous pouvez simplement faire ceci:

$.each(data, function(i,item) {
$("#" + item.ID).data(item.ID, item);
});

.data() prend n'importe quelle valeur, y compris un objet, vous pouvez donc aussi bien utiliser l'original. En outre, il est plus probable que vous souhaitiez ceci:

$.each(data, function(i, item) {
$("#" + item.ID).data("someKey", item);
});

Ensuite, vous pouvez utiliser un .data("someKey") pour récupérer les données également, plutôt que d'utiliser l'élément propre .id comme clé de données également.


1 pour la réponse № 2

Vous pouvez juste faire:

$("#" + item.ID).data(item.ID, item);

Vous pourrez toujours accéder aux valeurs comme prévu:

$("#" + someId).data(someId).NAME;

Soit dit en passant, JSON.stringify n'est pas une bonne idée, car pour relire les valeurs, vous devrez le reconvertir à partir d'une chaîne en objet.


1 pour la réponse № 3

Essayer:

$("#" + item.ID).data("info", item);