web-dev-qa-db-fra.com

Renvoyer JSON de PHP à JavaScript?

J'ai un script PHP qui est appelé via jQuery AJAX. Je souhaite que le script PHP renvoie les données au format JSON au javascript. Voici le pseudo-code dans le script PHP:

$json = "{";
foreach($result as $addr)
{
    foreach($addr as $line)
    {
        $json .= $line . "\n";
    }
    $json .= "\n\n";
}
$json .= "}";

En gros, j’ai besoin que les résultats des deux boucles for soient insérés dans $ json.

122
AquinasTub

Php a une fonction de sérialisation JSON intégrée.

json_encode

json_encode

S'il vous plaît utilisez-le si vous pouvez et ne souffrez pas du syndrome Not Invented Here.

188
Kent Fredric

Voici quelques éléments manquants dans les réponses précédentes:

  1. Définissez l'en-tête dans votre PHP:

    header('Content-type: application/json');
    echo json_encode($array);
    
  2. json_encode() peut renvoyer un JavaScript array au lieu de JavaScript object, voir:
    Retour du code JSON à partir d'un script PHP
    Il peut être important de savoir dans certains cas que les tableaux et les objets ne sont pas identiques.

118
aesede

Il y a une section JSON dans la documentation PHP. Vous aurez cependant besoin de PHP 5.2.0.

Depuis PHP 5.2.0, l'extension JSON est intégrée et compilée dans PHP par défaut.

Sinon, voici la bibliothèque PECL vous pouvez installer.

<?php
    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

    echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5}
?>
81
Ólafur Waage

Habituellement, vous voudriez également que vos données soient structurées dans le destinataire:

json_encode($result)

Cela préservera également les clés de la matrice.

Rappelez-vous que json_encode ne fonctionne que sur les données codées en utf8.

13
Jukka Dahlbom

Vous pouvez utiliser JSON simple pour PHP . Il envoie les en-têtes vous aider à forger le JSON.

Ça ressemble à : 

<?php
// Include the json class
include('includes/json.php');

// Then create the PHP-Json Object to suits your needs

// Set a variable ; var name = {}
$Json = new json('var', 'name'); 
// Fire a callback ; callback({});
$Json = new json('callback', 'name'); 
// Just send a raw JSON ; {}
$Json = new json();

// Build data
$object = new stdClass();
$object->test = 'OK';
$arraytest = array('1','2','3');
$jsonOnly = '{"Hello" : "darling"}';

// Add some content
$Json->add('width', '565px');
$Json->add('You are logged IN');
$Json->add('An_Object', $object);
$Json->add("An_Array",$arraytest);
$Json->add("A_Json",$jsonOnly);

// Finally, send the JSON.

$Json->send();
?>
4
Alexis Paques

$ msg = "Vous entrez un nom d’utilisateur incorrect OR Mot de passe"; $ responso = json_encode ($ msg); 

echo "{\"status\" : \"400\", \"responce\" : \"603\", \"message\" : \"You Enter Wrong Username OR Password\", \"feed\":".str_replace("<p>","",$responso). "}";
0
Ajay Prajapati