dobra: mehrere Zufallsartikel mit AJAX ausgeben

Beitrag lesen

Hallo,

mit Perl kann ich beliebig viele *verschiedene* Zufallsartikel ausgeben
(einfach die Funktion x mal aufrufen)

Mit Ajax schaffe ich das einfach nicht :(

Mein Script:

...  
print "Content-Type: text/plain;charset=ISO-8859-1\n\n";  
my $pCall = JSON::jsonToObj($main::input);  
my %result;  
$result{_call} = $pCall;  
  
if ($pCall->{method} eq 'ajaxrandom') {  
  	  
  my $page = $pCall->{params}[0]; # Seitennummer auf der die Artikel liegen  
  
	   my $ITEM = ssp::db_get_prefix() . "ITEM";  
		my $count = ssp::readSQLData(qq|SELECT ITEMID, ... FROM $ITEM WHERE PGID = $page |, "ITEMID",...);  
			if ($count >= 0) {  
  
				%RANDITEMS = ();  
				$curIndex = -1;  
				srand();		  
					my $ok = 0;  
					my $number = 0;  
					my $check = 0;  
					while (!$ok) {	  
						if ($check > $count) { $curIndex = -1; return; }  
						$number = int(rand($count));  
						$ok = !(defined $RANDITEMS{$number});  
						if ($ok) {  
							$RANDITEMS{$number}	= 1;  
							$curIndex = $number;  
						}  
						$check = $check + 1;  
					}		  
					  
						my $artikel = ssp::get_var_db("DESCR",$curIndex);  
						my $img = ssp::get_var_db("IMG",$curIndex);  
						... (div DB-Abfragen mit Formatierungen)  
						  
							$result{_random1} = qq|  
								<div class="randombox" style="float:left; margin: 10px;">  
									<div class="header"> Ausgabe der Artikelbeschreibung, Bild etc.</div>  
								</div>  
							|;	  
					  
		}			  
}  
  
	  
print JSON::objToJson(\%result);  
exit 0;  
...  

der JS-Teil:

function myrandom(seite){  
  
 if (-1 != myinterfacerandom.search(/__xxpath__\?/)) {  
      return;  
  }  
  
  var postdata = {  
			method : 'ajaxrandom',  
			id : 0,  
			params : [seite]  
		};  
	try {  
		req = new HTTP.Request(  
		{  
			uri: myinterfacerandom,  
			postbody: postdata.toJSONString(),  
			onSuccess: function (trans) {  
				 var data;  
				try {  
					data = eval('('+trans.responseText+')'); // JSON "parsen"  
				} catch(e) {  
					return;  
				}  
        var result_ramdom1 = data['_random1']; //Resultate übergeben	  
  
				document.getElementById("random1").innerHTML = result_ramdom1;  
			}  
		}  
		);  
	}  
	catch(e)  
	{  
		return;  
	}  
    return false;  
}  

HTML:

<body onload="myrandom('1200001270');">  
...  
	<div style="display:block; height: 200px; overflow:hidden;">  
			<div id="random1"><noscript>__randomitem::randomize__ __randomitem::test__</noscript> </div>  
			<div id="random">__randomitem::randomize__ __randomitem::test__ </div>  
			<div id="random">__randomitem::randomize__ __randomitem::test__ </div>  
			<div id="random">__randomitem::randomize__ __randomitem::test__ </div>  
			<div id="random">__randomitem::randomize__ __randomitem::test__ </div>  
			<div id="random">__randomitem::randomize__ __randomitem::test__ </div>  
	</div>  

wobei das
 __randomitem::randomize__ __randomitem::test__
die Perl-Funktion ausgibt (das soll auch zusätzlich drin bleiben, wegen der paar wenigen Besuchern, die JS deaktiviert haben)

Grund, warum ich das mit Ajax machen möchte, wo's doch mit Perl funktionert:
Meine Shopsoftware erstellt aus jeder dynamischen Seite eine *echte* statische für die SUMAs.
Auf diesen statischen Seiten funktioniert die Zufallsanzeige aber NICHT mit Perl - mit Ajax schon ....

Ich habe gestern stundenlang alles mögliche (for und while Schleifen, mehrfache DB-Abfragen mit ssp::get_var_db("DESCR",$curIndex +1); $curIndex +2 ... und so weiter versucht.
Hab's einfach nicht geschafft :(
hat alles nicht funktioniert, nur den Perl Interpreter hab ich zum Absturz gebracht und ein paar Endlosschleifen programmiert ;)

Kann mir bitte jemand helfen?
(P.S.: ich bin ein Newby mit Ajax - bitte um Nachsicht)