• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JQuery / AJAX / JSON = Rückgabewert "null"

DD-Stylz

Neues Mitglied
Guten Abend liebe Programmierfreunde :))

ich habe folgendes, wie ich finde merkwürdiges Phänomen.
Hier das Vorwort, ich habe eine Seite wo ich mir die Inhalte Dynamisch per JQUERY und AJAX laden lasse, als Übermittlungsformat wird JSON genutzt.

Der entsprechender JQEURY-Code sieht so aus (funktioniert auch einwandfrei)

Code:
success : function(reqCode) {
    if(reqCode != "false") {        //anzeigen der Erfolgsmeldung
        //alert(reqCode);
    var response = eval("(" + reqCode + ")");
    //alert(response.Message.Data);
    $('#div1').html(response.Message.Data);
        $('#div2').html(response.Pager);
                        
    $('#div1').fadeIn('slow', function() {
                
         });


    //wenn der Request eine Form von false zurückschickt, Fehler ausgeben.
    } else {
    alert('Fehler beim Abschicken des Formulares.' + reqCode);
    }
}

Hier der PHP-Ajaxteil:
Hier passiert nicht viel, die übergeben Parameter werden an die Search-Klasse übergegeben das Ergebnis wird dann auf bestimmte Platzhalter überprüft und durch ensprechende, Sprachenabhängige Texte ersetzt).
Anschliessend wird das Array mit in JSON-Format gebracht.
PHP:
$search = $classSearch -> doSearch($page, $text, $choise);
$search['Message']['Data'] = $classSprache -> translateText($search['Message']['Data'], $classSprache -> getSprachenID());
$html = json_encode($search);


Hier die doSerach-Funktion:
in getResult werden die Ergebnisse aus dem Select auf die DB in einem Array zurückgegeben.
in createContent, werden diese Ergebnisse entsprechend verarbeitet und in Form für die Ausgabe gebracht
createPager erklärt sich von alleine.
PHP:
public function doSearch($page, $title = "*", $kategorie = "*", $jahr = "*", $autor = "*", $director = "*", $besetzung = "*") {
		$result = $this -> getResult($page, 2, $title, $kategorie);
		$search = $this -> createContent($result, $kategorie, $title, false);
		$classPager = new Pager;
		$pager = $classPager -> createPager($page, 2, $result[0]);
		
		$returnArray = array("Pager" => $pager, "Message" => $search);
		
		return $returnArray;
	}

So jetzt zum Problem, dieser scheint i-wie hier zu hängen (oder allgemein an JQUERY/PHP Verbindung)
hier kommt ein Teil der Funktion createContent:
PHP:
		if(is_array($html)) {
			return $html;
		} else {
			return array("Data" => $html, "Header" => "{##TEXT_SEARCH_HEADER##} \"{$suchtext}\" ", "Titel" =>  "{##TEXT_SEARCH_TITEL##}");
		}
wenn $html ein Array ist wurde ein Fehler entdeckt und verarbeitet wenn nicht wird der Inhalt ($html) und der Titel sowie der Header gesetzt.

wenn ich es so lasse und mir im JQuery-Teil den Response ausgeben lasse ( alert(reqCode) ) steht unter Data null.
Das komische ist wenn ich
PHP:
return array("Data" => $html, "Header" => "{##TEXT_SEARCH_HEADER##} \"{$suchtext}\" ", "Titel" =>  "{##TEXT_SEARCH_TITEL##}");

durch

PHP:
return array("Data" => strlen($html), "Header" => "{##TEXT_SEARCH_HEADER##} \"{$suchtext}\" ", "Titel" =>  "{##TEXT_SEARCH_TITEL##}");

ersetze funktioniert es und es wird mir gemeldet dass die Variable $html eine länge von 2524 Zeichen hat. Also ist die Variable gesetzt und grob überschlagen dürfte die Länge hinhauen.


Woran kann es liegen?


Danke schon mal für die Hilfe :)
 
Werbung:
Kann es sein, dass in $search Umlaute o.ä. vorkommen?
afaik müsstest du diese vorher escapen.
PHP:
$html = json_encode(urlencode($search));
 
Bua was ein doofer Fehler :D jetzt funktionierts, lag an den Daten aus der DB, sind halt noch Testdaten und da waren Umlaute drinnen :))
habe nun alles DB-Ausgaben mit htmlenteties escpaed.

Können Sie mir auch vllt. sagen warum es so ist, also den Hintergrund dazu würde mich interessieren.


Grüß,
 
Werbung:
Zurück
Oben