Page 1 sur 1

Affichage de "data", mais pas de data.items

Posté : 24 juin 2014, 10:48
par RL-Flo
Bonjour tout le monde, je viens vous contacter car j'ai un souci en ajax :

J'aimerai récuperé les données suivantes: IdProduct,ISBN et prix
j'arrive à récuperer mon tableau de données, mais pas les données en elles mêmes !

Voici ma fonction ajax :
[javascript] $.ajax({
type:"post",
url:"php/pCompte_admin_commandesbackoffice.php",
datatype:"json",
data:"oneid="+id1+"&qte="+qte,
success:function(data){
$('#resultats').html(data); // display data
var input_id = '<p>'+data.ISBN+'</p>' ;
$('#hiddeninputs').append(input_id);
console.log(data);
console.log(data.ISBN);[/javascript]


qui va chercher cette fonction
if($id_unique!=0 && $id_unique!=null ){
$id_unique_qte=$_POST["qte"];  
$sql = "SELECT * FROM `products` WHERE `strProductReferenceOrISBN`= ".$id_unique." " ;
     $query=mysql_query($sql);
      while ($res=mysql_fetch_assoc($query)){
            $resultat = $res;
    }
    if($resultat!=null){
     //echo ($resultat['idProduct'].' - '.$resultat['strProductReferenceOrISBN'].' - '.$resultat['strProductName'].' - '.$resultat['numSalePrice']);
     //echo (" quantite : ".$id_unique_qte);
     echo json_encode(array(array("idProduct" => $resultat['idProduct'], "ISBN" => $resultat['strProductReferenceOrISBN'], "Price" => $resultat['numSalePrice'], "Nom" => $resultat['strProductName'])));
  }


La console log.Data me retourne :
[{"idProduct":"22078","ISBN":"9781423635482","Price":"16.95","Nom":"Little Master Kipling : The Jungle Book"}]

Pris d'optisme, je me disais que le plus dur était fait !
Hélas, si je veux sélectionner l'ISBN à l'aide de log(data.ISBN), le résultat est "undefinni"

Par allieurs, si j'essaie de récuperer les données à l'aide de
$.each( data, function( key, val ) {
console.log(key);
console.log(val);
});

je récuperer chaque caractères de ma string data...:
0 //key
[ // value
1 //key
{ //value
2 /key
" //value
3 //key
...
Pouvez vous m'indiquer ce que j'ai oublié? Merci, je débute en ajax !

Re: Affichage de "data", mais pas de data.items

Posté : 24 juin 2014, 11:22
par RL-Flo
Rebonjour !
Vu qu'on est rarement payé à rien faire, voici ma fonction de remplacement

[javascript] $.ajax({
type:"post",
url:"php/pCompte_admin_commandesbackoffice.php",
datatype:"json",
data:"oneid="+id1+"&qte="+qte,
success:function(data){
$('#resultats').html(data); // display data

data= data.substring(data.search('"idProduct"')+13);
var id_prod = data.substring(0,data.search('"'));
//console.log(id_prod);

data = data.substring(data.search('"ISBN"')+8);
var isbn = data.substring(0,data.search('"'));
//console.log(isbn);

data = data.substring(data.search('Price')+9);
var price = data.substring(0,data.search('"'));
//console.log(price);

data = data.substring(data.search('"Nom"')+7);
var nom = data.substring(0,data.search('"'));
//console.log(nom);

//console.log(data);
}[/javascript]

au ças ou cela puisse servir un jour à qqun dans le besoin !
Je récupere bien les informations que je cherchais, mais je veux bien qu'on m'explique quand même l'ajax ! :)

Re: Affichage de "data", mais pas de data.items

Posté : 24 juin 2014, 17:53
par Elie
J'avais un soucis je crois similaire ... Il aime pas les " " autour d'un nombre.
Je fais toujours ca du coup
json_encode(str_replace('"', '', $data));

Re: Affichage de "data", mais pas de data.items

Posté : 25 juin 2014, 15:10
par momox
D'un autre coté, le retour de ton appel AJAX est un objet ({...}) dans une collection ([...]).
Donc si tu veux accéder à data.ISBN c'est data[0].ISBN que tu dois demander.