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

  • mupilz
    hat ein Thema erstellt [Erledigt] leeres request trotz übergebenen Daten AJAX.

    [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.

  • mupilz
    antwortet
    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

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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.

    Einen Kommentar schreiben:


  • mupilz
    antwortet
    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.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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?

    Einen Kommentar schreiben:


  • mupilz
    antwortet
    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.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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!)

    Einen Kommentar schreiben:

Lädt...
X