JSON und JSONP mit PHP
Um eine cross-server JSON-Abfrage mit dem JQuery Framework durchzuführen muss der Antwort String als JSONP codiert sein.
Der JavaSkript-Code für einen Cross-Server-Request:
// ...
var param = "par1=eins&para2=zwei";
$.getJSON("http://www.anyserver.com"+"?"+param+"&callback=?"+"&_=[TIMESTAMP]", function(data) {
var items = [];
$.each(data, function(key, val) {
items.push('</pre>
<ul>
<li id="' + key + '">' + val + '</li>
</ul>
'); }); $('', { 'class': 'my-new-list', html: items.join('') }).appendTo('body'); });
// ...
Durch das hinzufügen des Parameter <em>callback=?</em> wird der JSON-Request in einen JSONP-Request umgewandelt und kann jetzt als Ziel auch einen anderen Server haben.
Meine PHP-Datei welche auf den Request antwortet sieht wie folgt aus:
// ...
if (isset($_GET['callback'])) {
$CALLBACK = $_GET['callback'];
}
// ...
$data = array("eins" -> 1, "zwei" -> 2, 3, 4);
$json = json_encode($data);
echo isset($CALLBACK) ? "{$CALLBACK}($json)" : $json;
Getestet in Firefox 18, Internet Explorer 9, Windows Phone 8 Standard Browser, Android 4 Standard Browser
JSON und JSONP mit Express 4.x in NodeJS
Inhalt …