Rückgabe von JSON aus einem PHP-Skript


Answers

Ein vollständiges Stück schönen und klaren PHP-Codes, der JSON zurückgibt, ist:

$option = $_GET['option'];

if ( $option == 1 ) {
    $data = [ 'a', 'b', 'c' ];
    // will encode to JSON array: ["a","b","c"]
    // accessed as example in JavaScript like: result[1] (returns "b")
} else {
    $data = [ 'name' => 'God', 'age' => -1 ];
    // will encode to JSON object: {"name":"God","age":-1}  
    // accessed as example in JavaScript like: result.name or result['name'] (returns "God")
}

header('Content-type: application/json');
echo json_encode( $data );
Question

Ich möchte JSON aus einem PHP-Skript zurückgeben.

Wiederhole ich nur das Ergebnis? Muss ich den Content-Type Header festlegen?




Wenn Sie json von php bekommen müssen, um benutzerdefinierte Informationen zu senden, können Sie diesen header('Content-Type: application/json'); hinzufügen header('Content-Type: application/json'); bevor Sie irgendeine andere Sache drucken, So können Sie dann drucken Sie custome echo '{"monto": "'.$monto[0]->valor.'","moneda":"'.$moneda[0]->nombre.'","simbolo":"'.$moneda[0]->simbolo.'"}';




Es ist auch gut, die Zugriffssicherheit einzustellen - ersetzen Sie einfach * durch die Domain, die Sie erreichen möchten.

<?php
header('Access-Control-Allow-Origin: *');
header('Content-type: application/json');
    $response = array();
    $response[0] = array(
        'id' => '1',
        'value1'=> 'value1',
        'value2'=> 'value2'
    );

echo json_encode($response); 
?>

Hier finden Sie weitere Beispiele: Wie umgehen Sie Access-Control-Allow-Origin?




Dies ist ein einfaches PHP-Skript, das männlich weiblich und Benutzer-ID zurückgibt, da der Json-Wert ein beliebiger zufälliger Wert sein wird, wie Sie das Skript json.php aufrufen.

Hoffe diese Hilfe, danke

<?php
header("Content-type: text/json");
$myObj=new \stdClass();
$myObj->user_id = rand(0, 10);
$myObj->male = rand(0, 5);
$myObj->female = rand(0, 5);
$myJSON = json_encode($myObj);
echo $myJSON;
?>



Sie können diese kleine PHP-Bibliothek verwenden . Es sendet die Header und gibt Ihnen ein Objekt, um es leicht zu benutzen.

Es sieht aus wie :

<?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();
?>



Gemäß dem Handbuch zu json_encode die Methode eine Nicht-Zeichenkette zurückgeben ( false ):

Gibt bei Erfolg eine JSON-codierte Zeichenfolge oder bei einem Fehler FALSE zurück.

Wenn dies passiert, gibt echo json_encode($data) den leeren String aus, der ein ungültiger JSON ist .

json_encode wird zum Beispiel fehlschlagen (und false ), wenn sein Argument eine nicht UTF-8-Zeichenfolge enthält.

Diese Fehlerbedingung sollte in PHP festgehalten werden, zum Beispiel so:

<?php
header("Content-Type: application/json");

// Collect what you need in the $data variable.

$json = json_encode($data);
if ($json === false) {
    // Avoid echo of empty string (which is invalid JSON), and
    // JSONify the error message instead:
    $json = json_encode(array("jsonError", json_last_error_msg()));
    if ($json === false) {
        // This should not happen, but we go all the way now:
        $json = '{"jsonError": "unknown"}';
    }
    // Set HTTP response status code to: 500 - Internal Server Error
    http_response_code(500);
}
echo $json;
?>

Dann sollte dem empfangenden Ende natürlich bewusst sein, dass das Vorhandensein der Eigenschaft jsonError einen Fehlerzustand anzeigt, den es entsprechend behandeln sollte.

Im Produktionsmodus ist es möglicherweise besser, nur einen allgemeinen Fehlerstatus an den Client zu senden und die spezifischeren Fehlermeldungen für eine spätere Untersuchung zu protokollieren.

Lesen Sie mehr über den Umgang mit JSON-Fehlern in der PHP-Dokumentation .




Wenn Sie eine Datenbank abfragen und die Ergebnismenge im JSON-Format benötigen, können Sie das folgendermaßen tun:

<?php

$db = mysqli_connect("localhost","root","","mylogs");
//MSG
$query = "SELECT * FROM logs LIMIT 20";
$result = mysqli_query($db, $query);
//Add all records to an array
$rows = array();
while($row = $result->fetch_array()){
    $rows[] = $row;
}
//Return result to jTable
$qryResult = array();
$qryResult['logs'] = $rows;
echo json_encode($qryResult);

mysqli_close($db);

?>

Um Hilfe beim Parsen des Ergebnisses mit jQuery zu erhalten, werfen Sie einen Blick auf dieses Tutorial .




Links