Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] leeres request trotz übergebenen Daten AJAX

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] leeres request trotz übergebenen Daten AJAX

    hi,
    zuerst, worum es geht:
    es ist ein Projekt für die Website meiner Schule, dort soll eine Seite entstehen, worauf man auf einer Europa Karte punkte angezeigt bekommt, wo Austauschprojekte stattgefunden haben.
    Diese Punkte sind bearbeitbar, das habe ich mit einem javaScript realisiert (wenns interessiert, kann ich gerne den kompletten code anhängen)
    wenn man die Punkte bearbeitet hat, kann man diese Speichern - der Teil ist der, wo das Problem auftritt:
    ich will die Daten als GET an ein php script senden, das die Punkte dann in einer datei ablegt.
    wenn ich allerdings das request sende, ist dieses leer, obwohl darin daten enthalten sein müssten! Das php Script ist getestet, es funktioniert einwandfrei. Ich bin seit ca. 2 Wochen an diesem einen Problem dran und finde keine Lösung.
    hier ist die javaScrpipt funkion zum request senden:
    Code:
    function save()
    {
        if (window.XMLHttpRequest)
        {
            request = new XMLHttpRequest(); // Mozilla, Safari, Opera
        }
        else if (window.ActiveXObject)
        {
            try
            {
                request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
            }
            catch (e)
            {
                try
                {
                    request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
                }
                catch (e)
                {
                }
            }
        }
    
        if (request)
        {
            var    i        = 0,
                    max    = document.getElementById('last_num').value,
                    dat    = "";
            for (i = 0; i < max; i++)
            {
                dat    +=    i + "=" + points[i]["name"] + ":" + points[i]["x"] + "|" + points[i]["y"];
                if (i < max-1)
                {
                    dat        += "&";
                }
            }
            request.open('get', "./scripts/save.php", true);
            request.send(dat);
            request.onreadystatechange = getReturn;
        }
        else
        {
            alert("Kann kein Request erzeugen!");
        }
    }
    hier ist das PHP script zum speichern:
    PHP-Code:
    <?php
    header
    ('Content-Type: text/html; charset=utf-8');
    header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');

    if (
    $_GET)
    {
        
    $data    "";
        foreach (
    $_GET as $id => $values)
        {
            
    $values    explode(":"$values);
            
    $data    .= "# point data \nid=" $id "\nname=" $values[0] . "\nx=";
            
    $values    explode("|",$values[1]);
            
    $data    .= $values[0] . "\ny=" $values[1] . "\n";
        }
        
    $file    fopen("map.cfg""w+");
        
    fwrite($file$data);
        
    fclose($file);
        if (
    file_get_contents("map.cfg") == $data)
        {
            print(
    "Erfolgreich gespeichert!");
        }
        else
        {
            print(
    "Konnte nicht gespeichert werden!");
        }
    }
    else
    {
        print(
    "Es wurde nichts uebergeben, konnte nichts speichern!");
    }
    ?>
    Ich hoffe, ihr könnt mir weiterhelfen. Wenn ich noch was vergessen hab, schreib ich das gerne noch dazu

    mfg mupilz

    EDIT: achja, das ganze funktioniert auch nicht, wenn ich beim request senden direkt einen string übergebe.


  • #2
    Zitat von mupilz Beitrag anzeigen
    wenn ich allerdings das request sende, ist dieses leer, obwohl darin daten enthalten sein müssten!
    Die Daten mit der send-Methode zu übergeben, ist bei GET falsch - das ist nur für POST-Daten.

    EDIT: achja, das ganze funktioniert auch nicht, wenn ich beim request senden direkt einen string übergebe.
    Ich kann nur vermuten, dass du damit den Versuch meinst, die Daten als GET-Parameter zu übergeben, wir es vorgesehen ist.


    Was hat denn deine Kontrollausgabe der zu übergebenden Daten ergeben?

    Bekommst du überhaupt eine Antwort vom PHP-Script, wird es überhaupt aufgerufen?

    (Du siehst, wie viele Rückfragen nötig sind, wenn deine Problembeschreibung eigentlich nur „funzt nich“ lautet. Bitte liefere also solche absolut wesentlichen Informationen beim nächsten Mal direkt!)

    Kommentar


    • #3
      Code:
      Es wurde nichts uebergeben, konnte nichts speichern!
      das kommt zurück, es wird also aufgerufen

      Die Daten mit der send-Methode zu übergeben, ist bei GET falsch - das ist nur für POST-Daten.
      funktioniert auch nicht, wenn ichs als POST sende. passiert genau das selbe, wie wenn ichs als GET sende.

      Kommentar


      • #4
        Zitat von mupilz Beitrag anzeigen
        funktioniert auch nicht
        Wieso muss ich dir jetzt schon zum zweiten Mal sagen, dass „funzt nich“ als Problembeschreibung absolut nichts taugt?

        Und wieso beantwortest du nur einen Teil der Fragen, die ich dir gestellt habe?

        Kommentar


        • #5
          okay, ich habe mir mal mit var_dump $GLOBALS angeschaut, $_POST ist leer, allerdings gibt es einen index HTTP_RAW_POST_DATA, da steht das request als string drin. Sollte das nicht normal in $_POST drinstehen? und als assoziiertes Array?

          Und wieso beantwortest du nur einen Teil der Fragen, die ich dir gestellt habe?
          hm? ich hab doch alle beantwortet
          Ich kann nur vermuten, dass du damit den Versuch meinst, die Daten als GET-Parameter zu übergeben, wir es vorgesehen ist.
          oder war das auch als Frage gemeint? wenn ja, das hab ich nicht erkannt.
          und nein, das war damit nicht gemeint. Aber das funktioniert.

          Was ich damit gemeint habe, war, dass ich anstatt "request.send(dat);" "request.send('irgend=ein_request')" schreibe, es ist ja möglich, dass es an der variable liegt.

          Kommentar


          • #6
            Zitat von mupilz Beitrag anzeigen
            $_POST ist leer, allerdings gibt es einen index HTTP_RAW_POST_DATA, da steht das request als string drin. Sollte das nicht normal in $_POST drinstehen? und als assoziiertes Array?
            Nur, wenn das Format korrekt ist, so dass PHP es auswerten kann - Stichwort application/x-www-form-urlencoded


            Und vor allem meinte ich die Frage,
            Was hat denn deine Kontrollausgabe der zu übergebenden Daten ergeben?
            - also das, was du clientseitig als zu sendende Daten zusammenbastelst.

            Was ich damit gemeint habe, war, dass ich anstatt "request.send(dat);" "request.send('irgend=ein_request')" schreibe, es ist ja möglich, dass es an der variable liegt.
            Ein Grund mehr, mal zu checken, was die zum Zeitpunkt der Übergabe eigentlich enthält.

            Kommentar


            • #7
              ahh, danke schön, das Problem ist gelöst
              Code:
              request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
              die Zeile musste ich einfach einfügen und es als POST senden

              - also das, was du clientseitig als zu sendende Daten zusammenbastelst.
              das hatte ich schon geprüft, da stimmte alles

              Danke für deine Hilfe

              mfg mupilz

              Kommentar

              Lädt...
              X