WebDevTeam’s Blog

Web Development, JavaScript, CSS, Ajax, Web2.0, Usability, Interaction, Tools

parsing AJAX response

with 2 comments

Man soll es nicht glauben: aber das ist tatsächlich mein aller erster post. Ever & überhaupt. Aber zum Thema …

Manchmal ist es ganz hilfreich zu wissen, was in einem AJAX response so alles drin steht. Und noch viel hilfreicher, wenn man bequem mit der alt bekannte jQuery-Syntax in diesem response rumfummeln kann, noch bevor man ihn auf der Seite einfügt. Wofür das gut ist? Jeder, der eine ganze HTML-Seite als response bekommt und daraus eigentlich nur ein bestimmtes Element braucht, weiß wovon ich rede.

Hier die – zumindest theoretische – Lösung:
<script type="text/javascript">

function parseXML(xml) {
var DOM;
if (window.ActiveXObject && window.GetObject) {
var DOM = new ActiveXObject(‚Microsoft.XMLDOM‘);
DOM.loadXML(xml);
}
else if (window.DOMParser) {
var DOM = new DOMParser().parseFromString(xml, ‚text/xml‘);
}

return (DOM && DOM.documentElement && DOM.documentElement.tagName != ‚parsererror‘) ? DOM : null;
}

var parsedResponse = parseXML(AJAXresponse);
alert(jQuery(„div“, parsedResponse).height());

</script>

Und nun zum Wermutstropfen: bislang habe ich das Script nur bei … ähm … beim „Projekt Etage 19“ testen können. Hier lieferte mir das Template nur ein HTML-Snippet als response. Das Parsen ging in die Hose. Ich weiß nicht, ob es an der „unvollständigen“ HTML-Datei lag. hatte noch keine Zeit zum Testen. Wer hier ’ne gute Idee hat: immer her damit.

Advertisements

Written by 00willson

April 3, 2009 um 1:02 pm

Veröffentlicht in Uncategorized

Tagged with

2 Antworten

Subscribe to comments with RSS.

  1. soweit ich weiß liefert .height() nur für sichtbare Elemente ein ergebnis – also für Elemente die 1. im gerenderten DOM hängen und 2. visible sind.
    Beides trifft nicht zu wenn du die response nur in der Hinterhand hältst.

    prinzipiell ist das parsen der Response aber möglich – z.b. um Inhalte raus zu greifen und einzeln zu verarbeiten. auch das anhängen von styles per .css({}) müsste möglich sein.

    wenn du nicht html sondern XML vom server bekommst geht das parsen sogar noch etwas leichter weil jQuery die Umwandlung übernimmt.


    dataType: “xml”,
    success: function(xml){
    jQuery(”/elements/element”, xml).each(function(){
    do something with „this“
    });
    }
    http://cgaskell.wordpress.com/2006/11/02/jquery-ajax-call-and-result-xml-parsing/

    ich frag mich gerade ob die explizite umwandlung über ActiveXObject etc überhaupt notwendig ist wenn jQuery sich schon mit der Antwort beschäftigt hat.

    kommt auf die Liste zum probieren

    Tino

    Tino

    April 3, 2009 at 5:04 pm

  2. Hi Tino,

    hast natürlich vollkommen recht – .height() bringt an dieser Stelle nix. Das kommt davon, wenn man Code zusammen kopiert 😉 ich werd das .height() gleich mal entfernen. Letztlich gings auch eher um das Parsen, damit man per jQuery bequem drauf zugreifen kann.

    Mit XML ließ sich leider nix machen, weil nachträglich eingebaut – und da lieferte der Server schon HTML.

    Gib doch nochmal Bescheid, wenn Dein Probieren Erkenntnisse geliefert hat. Bei mir gings leider nicht. Deshalb die Idee mit dem Parsen.

    ciao,
    Steffen

    00willson

    April 3, 2009 at 5:22 pm


Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: