json Variable an PHP übergeben

0k63

Grünschnabel
Hallo,

ich habe ein javascript-Programm erstellt, das Variablen erzeugt, die ich mir per Mail zustellen möchte. Dazu muss ich diese an php übergeben. Leider funktioniert das nicht so, wie ich gern hätte.

Der javascript-Teil sieht folgendermassen aus:

<script>
var anzaufgaben;
var anzrichtig;
var minuten;
var sekunden;

anzaufgaben = localStorage.getItem ("AnzahlAufgaben");
document.getElementById("anzaufgaben").innerHTML = "Gelöste Aufgaben: " + anzaufgaben;

anzrichtig = localStorage.getItem ("AnzahlRichtig");
document.getElementById("richtig").innerHTML = "Davon richtig: " + anzrichtig;

minuten = localStorage.getItem ("Minuten");
sekunden = localStorage.getItem ("Sekunden");
document.getElementById("zeit").innerHTML = "Zeit: " + minuten + ":" + sekunden + " min";

// json-Variable erstellen
var ergebnis = { "anzaufgaben": anzaufgaben,
"anzrichtig": anzrichtig,
"minuten": minuten,
"sekunden": sekunden };

var xhr = new XMLHttpRequest();
var url = "url";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function ()
{
if (xhr.readyState === 4 && xhr.status === 200)
{
var json = JSON.parse(xhr.responseText);
}
};
var data = JSON.stringify(ergebnis);

xhr.send(data);

window.location.replace("einmaleinsdiplomMail.php");

</script>

Im php-Teil möchte ich nun die json-Variable auslesen und später per Mail verschicken. Leder erhalte ich immer nur den Wert "null"

Der php-Code sieht folgendermassen aus:

<?php
header("Content-Type: application/json");
$ergebnis = json_decode(stripslashes(file_get_contents("php://input")));

echo json_encode ($ergebnis);
?>

Kann mir jemand sagen, wo der Fehler liegt.
 
(*) JS-Teil: Mit
Code:
alert(data);
mal überprüft, ob Daten drin sind?

(*) php-Teil: Raw-Daten a la
Code:
$json_data = file_get_contents("php://input");
echo "<pre>".$json_data."</pre>";
mal ausgeben, bevor Du mehrere Funktionen verschachtelst?

(*) beachten:
Code:
// this returns null if not valid json
   return json_decode($rawData);
mfg chmee
 
Danke für die prompte Antwort. Die Idee mit den Anzeigen hatte ich bereits. Die Variable existiert im JavaScript, aber im php ist alles leer.
 
Anstatt
Code:
$json_data = file_get_contents("php://input");
// --- dies --
foreach($_SERVER as $key => $value){
  echo "<b>".$key.":</b> ".$value."\n";
}
nehmen, um zu gucken, ob irgendwelche Daten ankommen?
 
Hi,

erhältst du eventuell einen Fehler in der Konsole (F12)? Zum Testen erstmal location.replace auskommentieren.

Ciao
Quaese
 
Herzlichen Dank an alle, die eine Antwort geschickt haben. Leider hat sich das Problem nicht gelöst. Daraufhin habe ich den Code geändert und das Problem in einem neuen Thema nochmals neu erstellt.
 

Neue Beiträge

Zurück