PHP und JSON: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 24: Zeile 24:
  
 
?>
 
?>
 +
 +
== Korrekte Header Informationen für JSON ==
 +
Wenn man Header Infos mit zurückgibt kann das z.B. so aussehen
 +
 +
<pre>
 +
$arrJSON = array('text'=>'Hallo Welt');
 +
// Wir geben der Anfrage ein JSON Objekt-Literal zurück
 +
$ajax_return_data = json_encode($arrJSON);
 +
header('Expires: Mon, 26 Jul 2000 03:00:00 GMT');
 +
header('Last-Modified: ' . gmdate( "D, d M Y H:i:s" ) . 'GMT');
 +
header('Cache-Control: no-cache, must-revalidate');
 +
header('Pragma: no-cache');
 +
header('Content-Length: '.strlen($ajax_return_data));
 +
header('Content-Type: application/json');
 +
echo $ajax_return_data;
 +
exit;
 +
</pre>
 +
 +
Der Content-Type: application/json ist nach Internet Recherche korrekt. Jedoch gibt es auch Aussagen über mögliche oder für manche Anwendungen sogar notwendige anders lautende Angaben:
 +
 +
Für JSONP (für Zugriff auf Server anderer Domains)
 +
Content-Type: application/javascript
 +
 +
Funktionieren soll angeblich auch:
 +
application/x-javascript
 +
text/x-javascript
 +
text/x-json

Version vom 5. November 2012, 09:37 Uhr

Daten aus mySQL in eine JSON Datei schreiben

<?php 
$sql=mysql_query("select * from Posts limit 20"); 

$response = array();
$posts = array();
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)) 
{ 
$title=$row['title']; 
$url=$row['url']; 

$posts[] = array('title'=> $title, 'url'=> $url);

} 

$response['posts'] = $posts;

$fp = fopen('results.json', 'w');
fwrite($fp, json_encode($response));
fclose($fp);

?>

Korrekte Header Informationen für JSON

Wenn man Header Infos mit zurückgibt kann das z.B. so aussehen

	$arrJSON = array('text'=>'Hallo Welt');
	// Wir geben der Anfrage ein JSON Objekt-Literal zurück
	$ajax_return_data = json_encode($arrJSON);
	header('Expires: Mon, 26 Jul 2000 03:00:00 GMT');
	header('Last-Modified: ' . gmdate( "D, d M Y H:i:s" ) . 'GMT');
	header('Cache-Control: no-cache, must-revalidate');
	header('Pragma: no-cache');
	header('Content-Length: '.strlen($ajax_return_data));
	header('Content-Type: application/json');
	echo $ajax_return_data;
	exit;

Der Content-Type: application/json ist nach Internet Recherche korrekt. Jedoch gibt es auch Aussagen über mögliche oder für manche Anwendungen sogar notwendige anders lautende Angaben:

Für JSONP (für Zugriff auf Server anderer Domains)

Content-Type: application/javascript

Funktionieren soll angeblich auch:

application/x-javascript
text/x-javascript
text/x-json