AJAX - Problem

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

  • AJAX - Problem

    Hallo

    da mich das Thema schon länger reizt versuche ich gerade ein simples AJAX - Beispiel zum laufen zu bekommen. Meine Page funktioniert allerdings aktuell nur mit Firefox und IE6, Opera liefert einen Fehler in der "Error Console" und eine weiße Seite, Konqueror schreibt den Inhalt des Requests nicht in das angegebene Div sondern direkt in das <html>

    Mein Script:

    Quellcode

    1. function load(what){
    2. var req = null;
    3. try{
    4. req = new XMLHttpRequest();
    5. }
    6. catch(ms){
    7. try{
    8. req = new ActiveXObject("Msxml2.XMLHTTP");
    9. }
    10. catch(nonms){
    11. try{
    12. req = new ActiveXObject("Microsof.XMLHTTP");
    13. }
    14. catch (failed){
    15. req = null;
    16. }
    17. }
    18. }
    19. if (req == null)
    20. alert("Konnte Ajax nicht initialisieren!");
    21. req.open("GET", "http://akazielx/test/viper/" + what, true);
    22. req.onreadystatechange = function(){
    23. switch (req.readyState){
    24. case 4:
    25. if (req.status != 200){
    26. alert("Fehler: " + req.status);
    27. }else{
    28. document.getElementById("content").innerHTML = req.responseText;
    29. }
    30. break;
    31. default:
    32. return false;
    33. break;
    34. }
    35. }
    36. req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    37. req.send(null);
    38. }
    Alles anzeigen


    Das ganze ist auss 2 Tutorials zusammengebaut:

    developer.mozilla.org/en/docs/AJAX:Getting_Started

    admin-wissen.de/tutorials/eige…jax-tutorial/xml-und-dom/

    das div mit der id="content" existiert und stimmt auch in Groß/Kleinschreibung überein.

    Der Operafehler ist:

    Quellcode

    1. Event thread: click
    2. Error:
    3. Unhandled exception: [Object LSException]
    4. code: 81
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)
  • Klar hier der Code:

    Quellcode

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    4. <head>
    5. <title>Website der ESD</title>
    6. <link rel="stylesheet" href="ajax_style.css" type="text/css" />
    7. <link rel="shortcut icon" href="favicon.ico" />
    8. <script type="text/javascript">
    9. <!--
    10. function load(what){
    11. var req = null;
    12. try{
    13. req = new XMLHttpRequest();
    14. }
    15. catch(ms){
    16. try{
    17. req = new ActiveXObject("Msxml2.XMLHTTP");
    18. }
    19. catch(nonms){
    20. try{
    21. req = new ActiveXObject("Microsof.XMLHTTP");
    22. }
    23. catch (failed){
    24. req = null;
    25. }
    26. }
    27. }
    28. if (req == null)
    29. alert("Konnte Ajax nicht initialisieren!");
    30. req.open("GET", "http://darthd.da.funpic.de/test/viper/" + what, true);
    31. req.onreadystatechange = function(){
    32. switch (req.readyState){
    33. case 4:
    34. if (req.status != 200){
    35. alert("Fehler: " + req.status);
    36. }else{
    37. document.getElementById("content").innerHTML = req.responseText;
    38. }
    39. break;
    40. default:
    41. return false;
    42. break;
    43. }
    44. }
    45. req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    46. req.send(null);
    47. }
    48. -->
    49. </script>
    50. </head>
    51. <body onload="load('1.txt')">
    52. <div id="container">
    53. <div id="left"></div>
    54. <div id="leftcol">
    55. <div id="menu">
    56. <ul id="menulist">
    57. <li class="top" onclick="load('1.txt')">Eins</li>
    58. <li class="ajax" onclick="load('2.txt')">Zwei</li>
    59. <li class="ajax" onclick="load('3.txt')">Drei</li>
    60. <li class="top" onclick="load('4.txt')">Vier</li>
    61. <li class="top" onclick="load('5.txt')">Fünf</li>
    62. </ul>
    63. </div>
    64. </div>
    65. <div id="content">
    66. &nbsp;
    67. </div>
    68. </div>
    69. </body>
    70. </html>
    Alles anzeigen


    Sry für die verzogene Einrückung, die hat das Kopieren nicht so toll überstanden

    EDIT://
    Sehr seltsam, Opera scheint nur bei den onclick - Events Probleme zu haben, mit onload geht das seltsamerweise
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von darthdespotism ()

  • Ich hatte das schonmal mit <a> nur hatte ich nicht herausbekommen wie ich href= setzen muss.

    Eine Idee was Konqueror dazu bewegt das direkt ins <html> statt in das passende <div> einzusetzen?

    EDIT://
    Ich habe das jetzt mit dem <a> umgesetzt, keine Verbesserung.

    Ich habe das ganze auch online zum ausprobieren:
    darthd.da.funpic.de/test/viper/ajax.html
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von darthdespotism ()

  • Was funktioniert denn eigentlich nicht? Mit Firefox 2.0.0.6 und Opera 9.23 habe ich jedenfalls keine Probleme deine Seiten zu laden.

    Offtopic... ich finde die AJAX Anwendung hier nicht sinnvoll. Das macht es nicht nur für den Benutzer unberechenbar (will er z.B. eine Unterseite bookmarken), sondern hat in der aktuellen Implementierung auch den Nachteil, dass die Scrollbar unten bleibt, wenn du die Seite wechselst.
  • Das ganze muss nicht unbedingt sinnvoll sein ;)

    Opera lädt bei mir die Seite korrekt, nur die "link" führen zu einer weißen Seite.

    return false; hab ich ausprobiert. bringt nichts neues

    EDIT://
    Safari 3.03 und IE7 gehen auch. Konqueror meldet einen Type Error: Null Value

    document.getElementById("content").innerHTML = req.responseText;
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von darthdespotism ()

  • Ich habe mal versucht das ganze auf ein Minimum zu reduzieren:
    Minimalbeispiel
    Opera lädt immer noch nichts nach und Konqueror ersetzt immer noch den _gesammten_ Inhalt des bodys (Kann ich irgendwie herausbekommen, was vom Head noch da ist?)
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von darthdespotism ()

  • d0nut schrieb:

    Kanns sein, dass dein Minimalbeispiel falsch verlinkt ist *g*
    Hm irgendwie seltsam, ich dachte das hatte gepasst, jetzt geht es auf jeden Fall

    Wenn du an AjaxInhalte ranwillst, machst du das am besten mit folgendem Snippet:

    Quellcode

    1. alert(document.getElementById('deinajaxdiv').parentNode.innerHTML);


    Damit lese ich den Inhalt des dem 'deinajaydiv' übergeordneten Tags aus und zeige das in einer MessageBox an, richtig? Mal sehen ob ich damit was zum debuggen bauen kann.

    Ich habe das ganze zwischenzeitlich mit den Code aus dem [coderwiki]http://www.coder-wiki.de/HowTos/AJAX-als-iframe-ersatz[/coderwiki] probiert, der Zeigt bei mir genau das gleiche Verhalten (POST durch GET ersetzt)
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)
  • Stimmt, das ist ein Name der reserviert sein könnte - würde auch einiges erklären :)

    Ich versuchs nachher gleich aus

    Ich habe das jetzt auf meinem lokalen Server durch my_load() ersetzt - und schon funktioniert es mit Opera & Konqueror :)
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von darthdespotism ()