Hi leute, hab mir schon einiges zum Thema JSOn
in combination mit PHP durchgelesen,
weiß soweit über unterscheide zwischen PHP 4 und
Version größer 5.2 bescheid aber irgentwie steh ich
trotzdem bisschen auf dem Schlauch.
Ich hab ein sehr schönes Codeschnipselchen für ein
Ajax-Bilderalbum entdeckt. Die Php-dateien hierzu
muss ich mir allerdings selber coden und hier bei hab
ich das Problem, dass ich einfach keinen Weg finde,
die in Javascript erzeugten JSON-Werte in PHP anzusprechen.
Hier mal zur Anschauung die wichtigsten Funktionen
aus meinem Javascript:
Dieser Teil ruft die oben beschriebene Funktion JSONService auf:
loadalbum ruft die oben genannte Funktion
EditUserGalerieService auf. Genau an dieser Stelle
liegt mein Problem. Die hier erzeugten JSON-Werte
möchte in meiner ajax.php ansprechen und nach
Verarbeitung an loadAlbumCallback zurückgeben.
Allerdings weiß ich nicht wie. Meine ajax.php folgt weiter unten.
Hier meine ajax.php:
Wenn mir jemand weiterhelfen könnte wär ich echt sehr verbunden.
Such mich jetzt schon seit tagen durch Tutorials und Foren, aber ich finde einfach
keine Lösung.
in combination mit PHP durchgelesen,
weiß soweit über unterscheide zwischen PHP 4 und
Version größer 5.2 bescheid aber irgentwie steh ich
trotzdem bisschen auf dem Schlauch.
Ich hab ein sehr schönes Codeschnipselchen für ein
Ajax-Bilderalbum entdeckt. Die Php-dateien hierzu
muss ich mir allerdings selber coden und hier bei hab
ich das Problem, dass ich einfach keinen Weg finde,
die in Javascript erzeugten JSON-Werte in PHP anzusprechen.
Hier mal zur Anschauung die wichtigsten Funktionen
aus meinem Javascript:
Code:
var JSONService = Class.create ({ initialize: function(definition) { this.mod = definition.mod; var methods = definition.methods; var i; for (i=0; i < methods.length; ++i ) { var name = methods[i].name+""; var argc; if ( methods[i].parameters ) { argc = methods[i].parameters.length; } else { argc = 0; } this[name] = new Function ('return new InvokeCall("'+this.mod+'","'+name+'",'+argc+',arguments);'); } } }); var InvokeCall = Class.create ({ initialize: function(mod, method, argc, params) { if ( argc != params.length ) { alert("Falsche Anzahl an Parametern bei Call " + method + " in Modul " + mod); return; } this.mod = mod; this.method = method; // Array kopieren - clone() funktioniert bei den // built-in parameters array nicht var i; this.params=[]; for ( i=0; i < params.length; ++i ) { this.params[i] = params[i]; } }, call: function () { var config = { mod: this.mod, method: this.method, params: this.params }; new Ajax.Request( "ajax.php", { method: "post", postBody: Object.toJSON(config), onSuccess: this.onSuccess.bind(this), onFailure: this.onFailure.bind(this) }); }, onSuccess: function (response) { var responseObj = eval("("+response.responseText+")"); this.callback.call({},responseObj.ret); }, onFailure: function ( response ) { alert("fehler") }, setCallback: function ( callback, context ) { if ( context != null ) { this.callback=callback.bind(context); } else { this.callback = callback; } return this; }, setErrorCallback: function ( callback ) { this.errorCallback = callback; return this; } });
Code:
var EditUserGalerieService = new JSONService ( { mod: "usergalerie", methods: [ { name: "get_pictures", parameters: [ "user_album_id" ] }, { name: "sort", parameters: [ "user_album_id", "order" ] } ] } );
EditUserGalerieService auf. Genau an dieser Stelle
liegt mein Problem. Die hier erzeugten JSON-Werte
möchte in meiner ajax.php ansprechen und nach
Verarbeitung an loadAlbumCallback zurückgeben.
Allerdings weiß ich nicht wie. Meine ajax.php folgt weiter unten.
Code:
loadAlbum: function (user_album_id) { this.showWaitScreen("Lade Bilderalbum"); EditUserGalerieService.get_pictures(user_album_id).setCallback( this.loadAlbumCallback,this).call(); } loadAlbumCallback: function (pictures) { var i; var html = ""; var template = new Template( '<div id="pic_#{user_galerie_id}" class="picture">blabla</div>' ); for (i=0; i < pictures.length; ++i ) { html+=template.evaluate(pictures[i]); } if ( pictures.length == 0 ) { $('useralbum_images').innerHTML = "<br />In dem Album befinden sich noch keine Bilder."; } else { $('useralbum_images').innerHTML = html; } this.hideWaitScreen (); this.showToolbar (); }
PHP-Code:
// So wird mit PHP 5.2 JSON zu PHP
$test1 = '{"mod": "usergalerie", "method": "get_pictures", "params": ["175546"]}';
$test = json_decode($test1);
var_dump($test);
//Was in $test1 steht hätte ich jetzt aber gerne dynamisch vom Javascript
//Aber wie?
$_GET["mod"] // fehlanzeige
$_POST["mod"] // fehlanzeige
$_REQUEST["mod"] //fehlanzeige
Such mich jetzt schon seit tagen durch Tutorials und Foren, aber ich finde einfach
keine Lösung.
Kommentar