Salut
J'ai un petit probleme avec l'Ajax
Dans un premier temps j'utilise une methode qui me permet de recuperer mes datas en JSON:
en PHP
public function Attribute($id){
$params = [
'conditions' => [
'category_id' => $id
]
];
$this->loadModel('Attribute');
header('Content-Type: application/json; charset=utf-8');
$attributes = $this->Attribute->find('all',$params);
$return['json'] = json_encode($attributes);
echo json_encode($return);
die();
}
et en JS:
$(document).ready(
$(".getAttId").click(function(){
attributeID = $(".getAttId").val();
var label = $(this);
var url = "/users/Attribute/" + attributeID;
var data = {
"action": "test"
};
$.ajax({
type: "GET",
dataType: "json",
url: url,
success: function(data) {
$(".resulta").html(
"Name: " + data['id']
);
var result = data['json'];
alert("DEBUG JSON: " + result);
}
});
return false
})
)
Je veux recuperer par exemple le nom qui se trouve dans le json par exemple:
result.Attribute.name
(mon JSON):
json :"[{"Attribute":{"id":"1","product_id":"1","category_id":"3","name":"Test2"}},{"Attribute":{"id":"2","product_id":"1","category_id":"3","name":"Tes1"}}]"
Lorsque j'essaye de debug avec alert(result); j'ai bien le contenu JSON mais lorsque j'essaye par exemple d'obtenir que le nom de cette facon:
result.Attribute.name
j'ai droit a un Attribute undefinide.
Je vous remercie d'avance pour votre aide.
Yop,
Le json renvoyé par ton PHP est un tableau contenant plusieur element qui eux contiene l'attribut Attribute.
Si tu veux acceder au attributs Atribute il te faudra iterer sur ton json via une boucle for par example.
for (var i = 0; i < result.length; i++) {
console.log(result[i].Attribute);
}
JSFiddle
Ce code affichera 1 par 1 tes attributs Attribut.
Salut, ton json est un tableau (Array), il y a plusieurs "Attribute".
Il est donc normal qu'un result.Attribute.name
te renvoit un undefined; il te manque l'index.
Hello,
Dans un premier temps, formate ton JSON correctement. Cela te permettra de mieux voir ce qui t'es retourné :
[{
"Attribute": {
"id": "1",
"product_id": "1",
"category_id": "3",
"name": "Test2"
}
}, {
"Attribute": {
"id": "2",
"product_id": "1",
"category_id": "3",
"name": "Tes1"
}
}]
Tu vois que ton JSON contient plusieurs fois "Attribute", donc c'est un tableau.
Si tu fait :
console.log(result);
Tu auras le JSON.
Si tu fait :
console.log(result.Attribute);
Tu as quoi comme résultat ?
A mon avis ? undefined
. Comme c'est un tableau, il n'existe pas result.Attribute
. Par contre, result[0].Attribute
doit exister !
Tu peux donc faire un foreach (ou un for) sur ton result
, qui est un tableau, et a ce moment là, tu pourras accéder au propriétés !
Bonjour, merci pour vos reponses, j'ai fait la boucle, mais j'ai toujours le fameux "undefined"
Avez-vous une idee d'ou cela peu venir malgre la boucle?
EDIT: Probleme resolut :)
Encore merci !