Variablenzugriff über jQuery-Ajax

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

  • Variablenzugriff über jQuery-Ajax

    Hallo Leute!

    Ich habe 3 Dateien.

    1. Datei: index.html (jQuery -> $.ajax)
    2. Datei: landscape.php -> $aktuellesBild
    3. Datei: portrait.php -> $aktuellesBild

    Nun ist es so: In Landscape- oder Portrait-Modus kann ich über die Bilder swipen. Wenn ich z.B. in Landscape-Modus beim 3.Bild bin und dann das iPad drehe (orientationchange), dann soll das 3.Bild auch in Portrait-Modus angezeigt werden und nicht wie zur Zeit immer das 1.Bild.

    Nun denke ich, dass man es lösen kann, in dem man über die index.html die Variableninhalte übertragen kann, damit man den aktuellen Index-Wert in die Variable "$aktuellesBild" beim Drehen des iPads setzen kann.

    Kurz gesagt: Beim Drehen von iPad den Variableninhalt von $aktuellesBild von landscape.php über index.html nach portrait.php übertragen und umgekehrt, aber wie?

    Surfer
  • Hi, ich würde mir wohl alle Bilder die du je nach Ausrichtung anzeigen kannst, bereits am Anfang laden.
    Und dann mit reinem JavaScript entscheiden was du anzuzeigen ist.

    Falls du es doch über AJAX realisieren magst, brauchst du einfach nur dataType: 'json' anzugeben (oder Alternativ den Shortcut $.getJSON nutzen)
    api.jquery.com/jQuery.getJSON/

    Der gibt dir automatisch das Objekt zurück, das du in php mit echo json_encode($objekt) ausgibst.

    LG
  • Hi Torben!

    Vielen Dank für deine Antwort!

    Ich habe hier ein Script, der soweit funktioniert (index.html):

    Quellcode

    1. $(document).ready(function() {
    2. $(window).bind('orientationchange', function(e){
    3. function loadData(data) {
    4. $("body").html(data);
    5. }
    6. if (window.orientation == 90 || window.orientation == -90) {
    7. $.ajax(
    8. {
    9. type: "GET",
    10. async: true,
    11. cache: false,
    12. dataType: 'json',
    13. url: "test/orientation/landscape.php",
    14. beforeSend:function(){
    15. $('body').html('<div class="loading"><img src="images/loading.gif" alt="Loading..." /></div>');
    16. },
    17. success: function(data) {
    18. loadData(data);
    19. }
    20. });
    21. } else if (window.orientation == 0 || window.orientation == 180) {
    22. $.ajax(
    23. {
    24. type: "GET",
    25. async: true,
    26. cache: false,
    27. dataType: 'json',
    28. url: "test/orientation/portrait.php",
    29. beforeSend:function(){
    30. $('body').html('<div class="loading"><img src="images/loading.gif" alt="Loading..." /></div>');
    31. },
    32. success: function(data) {
    33. loadData(data);
    34. }
    35. });
    36. }
    37. });
    38. $(window).trigger('orientationchange', true);
    39. });
    Alles anzeigen


    Was fehlt noch, damit beim Drehen von iPad der Variableninhalt von $aktuellesBild von landscape.php über index.html nach portrait.php übertragen und umgekehrt?

    Surfer
  • Hi Torben!

    Vielen Dank für deine Antwort!

    D.h. so müsste die index.html aussehen?

    Quellcode

    1. $(document).ready(function() {
    2. $(window).bind('orientationchange', function(e){
    3. function loadData(data) {
    4. $("body").html(data);
    5. last_data = data;
    6. }
    7. if (window.orientation == 90 || window.orientation == -90) {
    8. var url= "test/orientation/landscape.php";
    9. if (last_data) {
    10. url += '?aktuellesBild=' + last_data.aktuellesBild;
    11. }
    12. $.ajax(
    13. {
    14. type: "GET",
    15. async: true,
    16. cache: false,
    17. dataType: 'json',
    18. url: url,
    19. beforeSend:function(){
    20. $('body').html('<div class="loading"><img src="images/loading.gif" alt="Loading..." /></div>');
    21. },
    22. success: function(data) {
    23. loadData(data);
    24. }
    25. });
    26. } else if (window.orientation == 0 || window.orientation == 180) {
    27. var url= "test/orientation/portrait.php";
    28. if (last_data) {
    29. url += '?aktuellesBild=' + last_data.aktuellesBild;
    30. }
    31. $.ajax(
    32. {
    33. type: "GET",
    34. async: true,
    35. cache: false,
    36. dataType: 'json',
    37. url: url,
    38. beforeSend:function(){
    39. $('body').html('<div class="loading"><img src="images/loading.gif" alt="Loading..." /></div>');
    40. },
    41. success: function(data) {
    42. loadData(data);
    43. }
    44. });
    45. }
    46. });
    47. $(window).trigger('orientationchange', true);
    48. });
    Alles anzeigen


    Und landscape.php und portrait.php so?

    Quellcode

    1. HTML/CSS

    ...

    Quellcode

    1. $bild = $_GET['aktuellesBild'];
    2. ...
    3. $pic['aktuellesBild'] = $bild;
    4. echo json_encode($pic);

    ...

    Quellcode

    1. HTML/CSS


    Surfer
  • Hi Torben!

    Es funktioniert leider nicht. Es wird einfach nichts angezeigt. Die Seite bleibt weiß, egal, was man macht.

    Ich würde aber gerne nach diesem Prinzip haben:

    Quellcode

    1. ...
    2. dataid = <?php echo $id; ?>;
    3. datatyp = "<?php echo $type; ?>";
    4. $.ajax(
    5. {
    6. type: "GET",
    7. url: "test/orientation/landscape.php",
    8. data: "type="+datatyp+"&issueid="+dataid,
    9. beforeSend:function(){
    10. $('body').html('<div class="loading"><img src="images/loading.gif" alt="Loading..." /></div>');
    11. },
    12. success: function(data) {
    13. loadData(data);
    14. }
    15. });
    16. ...
    Alles anzeigen

    Weil ich sowas bereits einsetze und brauche, damit die entsprechende (Zeitungs-)Ausgabe erscheint, die ich "durchblättern" kann. Und das, s. "data", funktioniert soweit. Ich kann auf die Variablen in der landscape.php per GET zugreifen. Kann man denn nicht sowas in der Art machen bzw. das Ganze erweitern (s. data), dass man beim Drehen von iPad den Variableninhalt von $aktuellesBild von landscape.php über index.php nach portrait.php übertragen und umgekehrt? Oder geht es nur mit JSON?

    Surfer

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

  • Generell nein. Auf php variablen hast du ja mit javascript keinen Zugriff. Deswegen musst du sie mit json irgendwie in javascript übernehmen.
    Du kannst die Seite ja mal irgendwo hochladen, wenn du nicht weiter kommst, dann probiere ich es mit Firebug aus.

    Unsaubere Lösung: du kannst die aktuelle Seite einfach ein einer session speichern, dann kannst du serverseitig zwischen den php dateien kommunizieren.