[Ajax] [Jquery] Problem mit dynamischen Inhalt und des dazugehörigen Ajax requestes

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [Ajax] [Jquery] Problem mit dynamischen Inhalt und des dazugehörigen Ajax requestes

    Hi jungs! ich hab da mein ajax script mit jquery tools.
    wenn ich ihm in der ajax.php ein header ("content-type: text/xml"); gebe funktioniert es zwar aber, ich kann dann nicht wie gewünscht in Zeile 36 mit html() ausgeben da bricht er dann ab, weil halt kein html inhalt in einer reinen XML geht....

    nun meine frage kann man das so lösen, dass er mir quasi zwischen den tag <Text></Text> auch html interpretiert ?
    wenn ja, wie ?!



    die funktion News(); wird im Body geladen.

    Quellcode

    1. var effekt_fade = 800;
    2. var originalordner = 'http://localhost/dynamiknuss/';
    3. /* News lesen und bearbeiten mit overlay */
    4. function News()
    5. {
    6. lade_news(1);
    7. }
    8. function setze_news(news_nummer)
    9. {
    10. $("#inhalt").show().fadeOut(effekt_fade);
    11. setTimeout(function(){ lade_news(news_nummer); } ,effekt_fade);
    12. }
    13. function lade_news(nummer)
    14. {
    15. $(document).ready(function()
    16. {
    17. $.get(originalordner + 'dynamikcontent/ajax.php?a=News',"xml", function(d){
    18. var news_inhalte = $(d).find('Seiten').text();
    19. var i = 0;
    20. $(d).find('Artikel').each(function()
    21. {
    22. i = i+1;
    23. if (i == nummer)
    24. {
    25. $("#inhalt").empty();
    26. $("#inhalt").hide().fadeIn(effekt_fade);
    27. var $artikel = $(this);
    28. var $datum = $artikel.attr("Datum");
    29. var $kopfzeile = $artikel.find('Betreff').text();
    30. $("#inhalt").append('<span class="x_kopfzeile"><b>' + $kopfzeile + '</b><br />');
    31. $("#inhalt").append('<span class="x_datum">' + $datum + '</span><br /><br />');
    32. var $inhalt = $artikel.find('Text').html();
    33. $("#inhalt").append('<div id="x_inhalt">' + $inhalt + '</div><br />');
    34. /* Navigation der News */
    35. var navausg = '<div align="center"><table width="600" border="0"><tr>';
    36. last_seite = i-1;
    37. next_seite = i+1;
    38. if (last_seite >= 1)
    39. {
    40. navausg = navausg + '<td width="150"><div align="left"><span class="x_links_last" onClick="setze_news(' + last_seite +')">vorherige Nachricht << </span></div></td>';
    41. }
    42. else
    43. {
    44. navausg = navausg + '<td width="150">&nbsp;</td>';
    45. }
    46. navausg = navausg + '<td width="300"><div align="center"><span class="x_links_seitenzahl" align="center">' + i +' / ' + news_inhalte + '</span></div></td>';
    47. if (next_seite <= news_inhalte)
    48. {
    49. navausg = navausg + '<td width="150"><div align="right"><span class="x_links_next" onClick="setze_news(' + next_seite +')"> >> nächste Nachricht</span></div></td>';
    50. }
    51. if (i == news_inhalte)
    52. {
    53. navausg = navausg + '<td width="150"><div align="right"><span class="x_links_next" onClick="setze_news(1)"> >> erste Nachricht</span></div></td>';
    54. }
    55. $("#inhalt").append('<br /><br />' + navausg);
    56. }
    57. });
    58. });
    59. });
    60. }
    Alles anzeigen
    Beste Grüße,
    M4rc3L-XCN

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von M4rc3L-XCN ()

  • Soso, er bricht ab. Kann es vielleicht sein, dass der find('Text') schon fehlschlägt?
    Und html() dann quasi auf einem "nonobject" ausgeführt wird.

    Ich habe mal versucht dein Beispiel schmaler zu machen:

    Quellcode

    1. var div = document.createElement('div');
    2. div.innerHTML = '<b>bbb</b> <a>aaaa</a>';
    3. alert($(div).find('a').html());


    Das klappt super - ich nehme an, dass dein XML Dokument nicht wohlgeformt ist. Ist der HTML Code mit <!CDATA[...]]> umrandet?
  • ähm ich bekomm bei dem test alert($artikel.find('Text'));
    ein object object zurück. soweit so gut.
    mach ich statt html() ein text() bekomm ich auch den inhalt des textes zurück aber ich möcht ja nicht nur den text sondern den htmlcode auch.

    dumme frage wie muss das mit dem cdata aussehen ?

    was meinst du mit deinem codesegment ?


    meine XML php ausgabe:

    Quellcode

    1. <News>
    2. <Seiten>3</Seiten>
    3. <Artikel Datum="17.11.2009">
    4. <Betreff>News 1</Betreff>
    5. <Text>
    6. Blah blah 1<br/>63527 <br/>test
    7. </Text>
    8. </Artikel>
    9. <Artikel Datum="17.11.2009">
    10. <Betreff>News 2</Betreff>
    11. <Text>
    12. Blah blah 1<br/>63527 <br/>test
    13. </Text>
    14. </Artikel>
    15. <Artikel Datum="30.07.2009">
    16. <Betreff> EPS-Server</Betreff>
    17. <Text>
    18. Blah blah 1<br/>63527 <br/>test
    19. </Text>
    20. </Artikel>
    21. </News>
    Alles anzeigen
    Beste Grüße,
    M4rc3L-XCN

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von M4rc3L-XCN ()

  • nicht getestet, aber ich meinte das mit CDATA so:

    Quellcode

    1. <Text><![CDATA[
    2. Allen Besuchern unseres Servers ist ja bekannt, dass die HlstatsX Premium Tools auf unserem Gameserver geloggt sind.
    3. ...
    4. Man darf also wieder sehr gespannt sein, nachdem er auch das NutAdmin-Konfigurationstool für alle Member des NussClan´s hervorragen entwickelt hat.
    5. ]]></Text>


    Mein Beispiel sollte einfach nur eine Kurzfassung von deinem Code sein - ein kleines lauffähiges Beispiel ;)
  • klar schau mal hier habe jetzt text() drinne
    Page: neu.nussclan.de/
    XML file: neu.nussclan.de/dynamikcontent/ajax.php?a=News
    JS teil: neu.nussclan.de/dynamik/xcn.js

    habe am ende des News inhaltes die Lupe aus der Navigation nochmal eingefügt mit absolutlink im FF zeigt er sie und im IE net, zumindest hat er das letztes mal nicht gemacht.
    jetzt beim test macht er es....

    schau trotzdem mal rein

    PS: ähm mal was anderes noch in der wiki war das doch mit der lade grafik ich hab das als page_stat() in der xcn.js drinne wieso macht er beim IE das nicht so richtig mit dem effekt,
    ich möchte nämlich dass er die seite erst einblendet also das fadeIn() verwendet wenn er komplett alle grafiken aus dem head und navi bereich geladen hat.
    Beste Grüße,
    M4rc3L-XCN

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von M4rc3L-XCN ()

  • naja, durch das cdata ist es eben ein Text, statt ein HTML Objekt. Mit dem Firefox funktioniert also alles was du brauchst.
    Habe zur Zeit leider keinen IE zur Verfügung...
    Probier mal $.post statt $.get um sicherzustellen, dass es nicht am Caching liegt.

    Auch eine Variante um an den Inhalt zu kommen... (bestimmt keine bessere)

    Quellcode

    1. var $inhalt = $artikel.find('Text')[0].firstChild.data


    UPDATE: Für deine Ladegrafik Frage mach bitte ein extra Posting auf - vielleicht auch mit Screenshot