Literunner: Weiterleitung

Moinsen,

ich habe mir mit Mochi-Game ein Spiel eingebunden.
Wenn die Highscore gespeichert wird, wird per "gateway" eine PHP-Datei aufgerufen.

<script type="text/javascript">
.....
options.gateway = "......url.php";
</script>

Nach dem "url.php" ausgeführt wurde. Möchte ich gerne auf eine andere Seite weiterleiten.
Jedoch funktioniert das nicht.
Weder mit

<meta http-equiv="refresh" content="0; url=http://www.neueadresse.de/">

noch mit

header ("HTTP/1.1 301 Moved Permanently");
header ("Location: http://www.neueadresse.de/");

Komisch ist jedoch, das ich die Ausgabe, also die Weiterleitung in Firebug(Netzwerk) sehen kann.
Sowie alle echo ausgaben als TEST!

Hat jemand vielleicht eine Idee, was ich noch tun kann?

Vielen Dank

  1. <script type="text/javascript">
    .....
    options.gateway = "......url.php";
    </script>
    (Allerlei nicht funktionierendes Zeug.)

    Hat jemand vielleicht eine Idee, was ich noch tun kann?

    Ja. Offenbar werden da Daten per XMLHttpRequest abgeholt und dann ins DOM eingefügt. Dieses Javascript bekommt nun nicht die Daten, es erwartet und kann nicht ahnen, dass Du das gesamte Dokument von der neuen Adresse laden willst. Versuche zu ergründen, was Dein Javascript-Zeug tut und baue die Weiterleitung mit location.href da an der richtigen Stelle mit ein.

    <script type="text/javascript">
    .....
    options.gateway = "......url.php";

    .....
    location.href="http://www.neueadresse.de/"
    </script>

    Jörg Reinholz

    1. Sry, habe ich wohl falsch erklärt.

      Mit gateway funktioniert alles super.
      Javascript leitet an die richtige url.php weiter.

      Request, post daten. Werden da zurück gegeben.

      Mein Problem besteht in der url.php.
      Von da aus möchte ich auf eine andere Seite umleiten.

      Literunner

  2. Tach!

    ich habe mir mit Mochi-Game ein Spiel eingebunden.

    Das muss man sich konkret wie vorstellen?

    Wenn die Highscore gespeichert wird, wird per "gateway" eine PHP-Datei aufgerufen.

    <script type="text/javascript">
    .....
    options.gateway = "......url.php";
    </script>

    Ach, eine Zuweisung ruft eine URL auf? So wird es wohl nicht wirklich sein. Was passiert genau? Wird da anschließend ein Ajax-Request gestartet?

    Nach dem "url.php" ausgeführt wurde. Möchte ich gerne auf eine andere Seite weiterleiten.

    Der Ajax-Request soll sich seine Antwort anderswo abholen oder soll nach der Verarbeitung der angefragten Daten die Seite im Browser eine andere werden?

    Hat jemand vielleicht eine Idee, was ich noch tun kann?

    Genauer, nachvollziehbarer beschreiben oder ein Online-Beispiel bereitstellen.

    dedlfix.

    1. Moinsen,

      okay, ich versuche es nochmal besser zu erklären.

      Bei mochimedia.com kann man sich die Flash-Spiele in die eigene Homepage einbauen. Die erzielten Highscores werden dann im Leaderboard(Highscore-Liste) von Mochimedia gespeichert.

      Dazu liefert Mochimedia noch eine Bridge(API), damit kann man sich zb. die Daten zurückgeben lassen (Request) zb. Highscore, Name, ID etc. Punkt 1.3 Example

      Dafür muss man in der Bridge den Pfad zur gewünschten Datei angeben.(Gateway)
      ....
      options.gateway = "http://www.example.com/url.php";
      ....
      Und genau zu dieser Datei, werden die Daten gesendet.
      In dieser Datei, kann ich mir die Daten mit $_POST holen und weiter verarbeiten.

      In meinem Fall, speichere ich die Daten in der Datenbank.

      Wenn die Datei "url.php" jetzt durchgelaufen ist. Soll zur einer bestimmten Url weitergeleitet werden.

      Hoffe ist jetzt besser erklärt :)

      Falls erwünscht, kann ich euch auch den Link zur Homepage geben. Aber das nur per E-Mail, da die Seite noch nicht fertig ist.

      Literunner

      1. Hi,

        Dazu liefert Mochimedia noch eine Bridge(API), damit kann man sich zb. die Daten zurückgeben lassen (Request) zb. Highscore, Name, ID etc. Punkt 1.3 Example

        Dafür muss man in der Bridge den Pfad zur gewünschten Datei angeben.(Gateway)
        ....
        options.gateway = "http://www.example.com/url.php";
        ....
        Und genau zu dieser Datei, werden die Daten gesendet.
        In dieser Datei, kann ich mir die Daten mit $_POST holen und weiter verarbeiten.

        Das ist fein.
        Allerdings passiert der Aufruf dieser URL vermutlich im Hintergrund – d.h., dein Browser ist daran nicht direkt beteiligt –

        Wenn die Datei "url.php" jetzt durchgelaufen ist. Soll zur einer bestimmten Url weitergeleitet werden.

        – also nützt es auch nichts, wenn du in der Antwort auf diesen Request einen Redirect versuchst, der kommt einfach nicht beim Browser an.

        Die von dir verlinkte Dokumentation erwähnt auch einen Parameter namens callback:

        “A JavaScript function which will be called when the player submits a score. This can be used instead of the gateway if you prefer to handle the score information via the client-side. Or you may want to alter the game page based on the submission.”

        – das wäre vermutlich eher das, was du brauchst, wenn du direkt auf das Abschicken eines Scores reagieren willst. Beachte aber, dass dort “instead of the gateway” steht – d.h., die Funktionalität des Übergebens des Scores an die API müsstest du dann vermutlich selber implementieren.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hi,

          Dazu liefert Mochimedia noch eine Bridge(API), damit kann man sich zb. die Daten zurückgeben lassen (Request) zb. Highscore, Name, ID etc. Punkt 1.3 Example

          Dafür muss man in der Bridge den Pfad zur gewünschten Datei angeben.(Gateway)
          ....
          options.gateway = "http://www.example.com/url.php";
          ....
          Und genau zu dieser Datei, werden die Daten gesendet.
          In dieser Datei, kann ich mir die Daten mit $_POST holen und weiter verarbeiten.

          Das ist fein.
          Allerdings passiert der Aufruf dieser URL vermutlich im Hintergrund – d.h., dein Browser ist daran nicht direkt beteiligt –

          Genau das, passiert.

          Wenn die Datei "url.php" jetzt durchgelaufen ist. Soll zur einer bestimmten Url weitergeleitet werden.

          – also nützt es auch nichts, wenn du in der Antwort auf diesen Request einen Redirect versuchst, der kommt einfach nicht beim Browser an.

          Die von dir verlinkte Dokumentation erwähnt auch einen Parameter namens callback:

          “A JavaScript function which will be called when the player submits a score. This can be used instead of the gateway if you prefer to handle the score information via the client-side. Or you may want to alter the game page based on the submission.”

          Oh man, die callback funktion. Warum habe ich daran nicht selber gedacht. Irgendwann sieht man den Wald vor lauter Bäumen nicht mehr. *Schäm

          – das wäre vermutlich eher das, was du brauchst, wenn du direkt auf das Abschicken eines Scores reagieren willst. Beachte aber, dass dort “instead of the gateway” steht – d.h., die Funktionalität des Übergebens des Scores an die API müsstest du dann vermutlich selber implementieren.

          Genau das habe ich gesucht :) Funktioniert 1A *freu

          Eine Frage habe ich jetzt noch.
          Wenn ich die Weiterleitung ausführe.
          ...
          options.callback = function (params) {window.setTimeout("document.location.href = 'http://www.example.com/'", 1000)};
          ...

          Da meine Datei ja im Hintergrund ausgeführt wird "url.php"(Gateway). Wird die Ausführung dann unterbrochen, wenn die Weiterleitung ausgeführt wird?

      2. Tach!

        Hoffe ist jetzt besser erklärt :)

        Etwas, der interessante Teil für die Lösungsfindung kam zu kurz.

        options.gateway = "http://www.example.com/url.php";
        Und genau zu dieser Datei, werden die Daten gesendet.
        Wenn die Datei "url.php" jetzt durchgelaufen ist. Soll zur einer bestimmten Url weitergeleitet werden.

        Was genau macht der Browser beim Absenden? Sendet er einen Ajax-Request oder einen "normalen" Request, so wie bei einem Formular? Eine Ajax-Request-Verarbeitung im Browser wird der Umleitung vielleicht folgen, um das Ergebnis des Requests abzuholen. Aber das heißt nicht, dass das Javascript, das die Antwort verarbeitet, diese Umleitung nun zum Anlass nimmt, die URL im Browser zu erneuern - sprich: die Umleitung im Browser auszuführen. Vermutlich musst du an der Stelle eingreifen, an der im Browser die Response-Verarbeitung zu diesem Ajax-Request stattfindet, und dort die Umleitung selbst anstoßen. Das heißt, dass die Umleitungsadresse entweder im Browser bekannt sein muss oder im Daten-Teil der Response mitgesendet werden muss. Eine 301er Antwort wird nichts bringen, ein Meta-Refresh nur dann, wenn das Dokument, in dem er steht, im Browser zur Anzeige gebracht wird. Eine Ajax-Response kommt nicht von sich aus zur Anzeige.

        dedlfix.

        1. Tach!

          Hoffe ist jetzt besser erklärt :)

          Etwas, der interessante Teil für die Lösungsfindung kam zu kurz.

          options.gateway = "http://www.example.com/url.php";
          Und genau zu dieser Datei, werden die Daten gesendet.
          Wenn die Datei "url.php" jetzt durchgelaufen ist. Soll zur einer bestimmten Url weitergeleitet werden.

          Was genau macht der Browser beim Absenden? Sendet er einen Ajax-Request oder einen "normalen" Request, so wie bei einem Formular? Eine Ajax-Request-Verarbeitung im Browser wird der Umleitung vielleicht folgen, um das Ergebnis des Requests abzuholen. Aber das heißt nicht, dass das Javascript, das die Antwort verarbeitet, diese Umleitung nun zum Anlass nimmt, die URL im Browser zu erneuern - sprich: die Umleitung im Browser auszuführen. Vermutlich musst du an der Stelle eingreifen, an der im Browser die Response-Verarbeitung zu diesem Ajax-Request stattfindet, und dort die Umleitung selbst anstoßen. Das heißt, dass die Umleitungsadresse entweder im Browser bekannt sein muss oder im Daten-Teil der Response mitgesendet werden muss. Eine 301er Antwort wird nichts bringen, ein Meta-Refresh nur dann, wenn das Dokument, in dem er steht, im Browser zur Anzeige gebracht wird. Eine Ajax-Response kommt nicht von sich aus zur Anzeige.

          Danke, für eure Hilfe.
          ChrisB hat den Nagel, genau auf dem Kopf getroffen :)