AJAX Übergabe an PHP schlägt fehl

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

  • AJAX Übergabe an PHP schlägt fehl

    Hallo,

    ich habe ein relativ simples AJAX Script, dass die Browserbreite an ein PHP Script übergeben soll und dieses PHP Script, soll dann gleichzeitig wieder ausgelesen werden, jedoch bekomm ich nichts zurück. Weiß jemand wo mein Fehler liegt?

    Quellcode

    1. <script type="text/javascript">
    2. function passFields(url,args)
    3. {
    4. url += "?";
    5. for(var i=0; i<args.length; i=i+2)
    6. {
    7. url += args[i] + "=" + args[i+1] + "&";
    8. }
    9. if(window.XMLHttpRequest)
    10. {
    11. req = new XMLHttpRequest();
    12. }
    13. else if(window.ActiveXObject)
    14. {
    15. req = new ActiveXObject("Microsoft.XMLHTTP");
    16. }
    17. try
    18. {
    19. req.open("GET", url, true);
    20. req.send(null);
    21. }
    22. catch(e)
    23. {
    24. //nothing;
    25. }
    26. }
    27. function getBrowserSize()
    28. {
    29. var url = "getBrowserSize.php";
    30. var args = new Array();
    31. args.push("screenwidth");
    32. args.push(screen.width);
    33. passFields(url, args);
    34. }
    35. </script>
    36. </head>
    37. <body onload="getBrowserSize();">
    Alles anzeigen


    Und die PHP Datei:

    Quellcode

    1. <?php
    2. $_GET["screenwidth"] = isset($_GET["screenwidth"]) ? intval($_GET["screenwidth"]) : 0;
    3. echo $_GET["screenwidth"];
    4. ?>


    Aber dennoch bekomme ich immer nur den Wert 0 angezeigt...

    Danke für eure Hilfe.
  • hm.. wo fragst du denn genau die ajax seite ab..
    hab dir mal folgendes ergänzt

    Quellcode

    1. try
    2. {
    3. req.open("GET", url, true);
    4. req.onreadystatechange = triggered;
    5. req.send(null);
    6. }


    außerdem noch

    Quellcode

    1. function triggered() {
    2. if ((req.readyState == 4) && (req.status == 200)) {
    3. document.getElementById("output").innerHTML = req.responseText;
    4. }
    5. }


    und danach noch in die ausgabe ein

    Quellcode

    1. <div id="output"></div>


    und siehe da -> es klappt
  • Hmm ja danke, jetzt gehts :)

    Nur komisch, wenn ich in der PHP-Datei den Wert verarbeiten möchte, geht das nur Teilweise... ich versteh es selber nicht so ganz...

    steht jetzt in der PHP-Datei folgendes drin

    Quellcode

    1. switch($_GET["screenwidth"])
    2. {
    3. case "800":
    4. $limit = "2";
    5. break;
    6. case "1024":
    7. $limit = "3";
    8. break;
    9. case "1152":
    10. $limit = "3";
    11. break;
    12. case "1280":
    13. $limit = "4";
    14. break;
    15. case "1920":
    16. $limit = "5";
    17. break;
    18. default:
    19. $limit = "3";
    20. }
    21. echo $_GET["screenwidth"];
    Alles anzeigen


    Und ich habe eine Bildschirmauflösung von 1920, dann gibt er auch beim echo 1920 aus, aber limit ist trotzdem default oder 3...

    Hat da noch jemand von euch eine Ahnung, woran das liegen könnte? Liegts vielleicht damit zusammen, dass der Wert "1920" zu langsam übertragen wird beim Seitenaufbau? Weil der braucht ca. 1. Sekunde bis er den Wert ausgibt, da ist aber schon längst der Rest der Seite fertig geladen...
  • Ok, soweit gehts auch. Aber jetzt gibt er ja den richtigen Wert nur in diesem div aus, wie kann ich denn den genauen Wert nun mit php weiterverarbeiten?

    ich bräuchte dann nämlich den Wert $limit für eine Datenbankabfrage und wenn ich die gesamte PHP-Datei (getBrowserSize.php) includiere, bekomm ich so nur den default-Wert... Und sonst bekomm ich über das div id=output ja den richtigen Wert geliefert... Wenn ich nun den richtigen Wert nun noch weiter verarbeiten könnte, würde der Rest auch gehen.
  • richtig richtig ;)

    Ähm also ich möchte, je nach Bildschirmbreite so und soviel aus der DB holen. Wenn die Bildschirmbreite sehr breit ist, könnte man viel aus der DB holen, wenn kleiner, dann eben weniger, so das es schön alles in eine Reihe passt. Ja ich weiß dass der User nicht unbedingt Vollbildmodus mit seinem Browser fährt, aber das habe ich vorher schon alles bedacht.

    Ich wollte eben bei einer Auflösung von über 1600 5 Artikel aus der DB holen, bei einer Auflösung von 1024 eben nur 3 usw... So war mein Plan.