2017-10-20 16 views
1

Donc, je dois analyser un php json en javascript.Parse php json to javascript

Le code ressemble à ceci:

$thumbnails = []; 
foreach ($images as $key => $image) 
{ 
    $thumbnails[$image->time] = [ 
    'src' => MovieEntity::getImageWithPublicPath(
     $movie->id, $image->filename, 130, 0, false 
    ), 
    'width' => '165px', 
    'height' => '95px' 
    ]; 
} 

return json_encode($thumbnails, JSON_UNESCAPED_SLASHES); 

et le résultat est:

{"5":{"src":"google.ro","width":"165px","height":"95px"},"7": 

Je veux prendre le src, width et height et les insérer comme des images comme:

<a href=""> 
    <img src="src of image" width="" height=""> 
</a> 

Que dois-je faire? Cette variable en PHP est appelée $thumbnails, ce qui renvoie le JSON que j'ai montré ci-dessus.

<?php echo $thumbnails ?> 

LE: Ma solution est:

<?= '<script>var json='.$thumbnails.'</script>' ?> 
console.log(json); 

Cela vous ramènera JSON dans la console.

+0

Ce ne est pas en double. J'ai besoin de quelque chose de différent merci –

Répondre

0

Si vous utilisez jQuery: $.parseJSON().

Si vous utilisez javascript simple: JSON.parse()

// jQuery snipet 
var thumbnails = $.parseJSON('<?php echo $thumbnails; ?>'); 
console.log(thumbnails.src); 
console.log(thumbnails.width); 
console.log(thumbnails.height); 
+0

Si j'essaie d'utiliser votre code, j'ai obtenu ceci: Uncaught SyntaxError: Jeton inattendu

+0

@StefanIordache il y avait une faute de frappe: J'ai écrit $ thumnails au lieu de $ thumbnails. Essayez-le maintenant – Dacklf

+0

Oui, je l'ai vu depuis le début. J'ai toujours reçu ce message de la console. Uncaught SyntaxError: jeton inattendu ) à Function.oe.parseJSON –

0

Vous pouvez le faire en JavaScript plaine.

Echo JSON dans une balise script

<script type="application/json" id="json"> 
    <?php echo $thumbnails; ?> 
</script> 

cible ensuite avec JavaScript

var json = JSON.parse(document.getElementById('json').innerHTML); 

var img = document.querySelector('img'); 

img.src = json.src; 
img.width = json.width; 
img.height = json.height; 
+0

Cette solution ne marche pas pour moi. Merci –

0

Dans votre javascript, vous devez demander votre fonction php en faisant une requête get (supposons que vous utilisez jQuery). Après cela, dans le rappel de succès, vous avez les données. Donc, essayez quelque chose comme ça:

$.ajax({ 
    url : 'file.php', // your php file 
    type : 'GET', // type of the HTTP request 
    success : function(data){ 
     var obj = jQuery.parseJSON(data); 
     console.log(obj); 
    } 
}); 

Vous pouvez aller here pour plus d'informations

+0

J'ai le js et php dans le même fichier –

+0

et vous ne pouvez pas séparer dans deux fichiers?ou essayez de supprimer la propriété url dans l'objet ajax – Berserk