2016-06-16 18 views
0

Ich versuche, einen sehr einfachen Webserver zu erstellen, der JSON-Daten senden und abrufen kann.PHP POST und GET JSON-Daten

JavaScript:

var username = document.getElementsByName('username')[0].value; 
var antwort1 = document.getElementsByName('frag1')[0].value; 
var antwort2 = document.getElementsByName('frag2')[0].value; 
var antwort3 = document.getElementsByName('frag3')[0].value; 

//JSON 
var jsondata = {"data" :[ 
{"name": username}, 
{"antwort1":antwort1}, 
{"antwort2":antwort2}, 
{"antwort3":antwort3}]}; 


var url = "https://...../apps/server.php"; 
var xmlHttp = new XMLHttpRequest(); 
xmlHttp.open("POST", url, true); 
xmlHttp.send(JSON.stringify(jsondata)); 
console.log(xmlHttp.responseText); 
alert(xmlHttp.responseText); 

PHP:

<?php 

    $json_data; 

    if($_GET["json"]) { 
    echo $json_data; 
    exit(); 
    } 
    /* 
    if(!isset($_POST)){ 
    //$json_data = json_decode($_POST["data"]); 
    echo "test POST"; 
    exit(); 
    } 
    */ 

    if(!isset($_POST)){ 
    $json_data = file_get_contents('php://input'); 
    echo $json_data; 
    exit(); 
    } 

?> 

Mein Hauptproblem ist, wie kann ich JSON meinem PHP-Server senden. Ando, ​​wie kann ich das überprüfen? Letztendlich möchte ich nur die JSON Daten speichern und zurücksenden.

Send JSON data from Javascript to PHP?

Ich versuche es wie in dem obigen Link.

UPDATE: wie rick

JavaScript: Zwei-Knopf ein eine für GET für POST

function btn1() { 
    alert("btn1"); 
    var url = "https://....../apps/server.php?json=null"; 
    var xmlHttp = new XMLHttpRequest(); 
    xmlHttp.open("GET", url, false); // false for synchro nous request 
    xmlHttp.send(null); 
    alert(JSON.stringify(xmlHttp.responseText)); 
    console.log(xmlHttp.responseText); 


    }; 


    function btn0() { 
    alert("test"); 
    var username = document.getElementsByName('username')[0].value; 
    var antwort1 = document.getElementsByName('frag1')[0].value; 
    var antwort2 = document.getElementsByName('frag2')[0].value; 
    var antwort3 = document.getElementsByName('frag3')[0].value; 
    //alert(username+" "+antwort1+" "+antwort2+" "+antwort3); 
    //JSON 
    var jsondata = {"data" :[ 
    {"name": username}, 
    {"antwort1":antwort1}, 
    {"antwort2":antwort2}, 
    {"antwort3":antwort3}]}; 
    //alert(jsondata.data[0].name); 

    var url = "https://...../server.php"; 
    var xmlHttp = new XMLHttpRequest(); 

    xmlHttp.onreadystatechange = function() { 
     if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { 
     alert(xmlHttp.responseText); 
     } 
    }; 
    xmlHttp.open("POST", url, true); 
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlHttp.send("jsonData="+JSON.stringify(jsondata)); 

    }; 

PHP

<?php 
     $json_data = ""; 

     if($_GET["json"]) { 
     echo $json_data; 
     exit(); 
     } 

     if(!isset($_POST)){ 
      $json_data = $_POST["name"]; 
      echo $json_data; 
      exit(); 
     } 


    ?> 
+0

Es wird empfohlen, eine JS-Bibliothek zu verwenden, die zunächst alle AJAX-Dateien für Sie sortiert. –

+0

Ich versuche es auch mit Ajax, aber ich brauche mehr Hilfe – thenewOne1234567890

+0

Was ist, wenn Sie einfache Post-Anfrage an PHP-Datei senden können und dann 'json_encode' verwenden? –

Antwort

1

Für den POST Teil esier es ist zu benutze application/x-www-form-urlencoded damit du kann die POST-Daten behandeln, als ob es ein Formular ist.

Für die Antwort müssen Sie einen Rückruf einrichten, weil Ihr Anruf asynchron ist.

versuchen etwas wie die

var url = "https://...../apps/server.php"; 
var xmlHttp = new XMLHttpRequest(); 

xmlHttp .onreadystatechange = function() { 
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { 
    alert(xmlHttp.responseText); 
    } 
}; 
xmlHttp.open("POST", url, true); 
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xmlHttp.send("jsonData="+JSON.stringify(jsondata)); 

Für die PHP

if(!isset($_POST)){ 
    $json_data = $_POST["jsonData"]; 
    echo $json_data; 
    exit(); 
} 

Es ist 10 Jahre, als ich nicht eine Zeile in PHP schreiben, aber ich hoffe, dass das Konzept klar.

+0

Ich versuche es, aber ich bekomme einen Fehler: Undefinierter Index: json in /var/.../public_html/apps/server.php in Zeile 13. PHP: \t $ json_data; \t if ($ _GET ["json"]) { echo $ json_data; Ausgang(); } \t if (! Isset ($ _ POST)) { \t \t $ json_data = $ _POST [ "name"]; \t \t echo $ json_data; \t \t exit(); \t} Es funktioniert nicht und das ist mein Problem. Ich habe die ganze Zeit. – thenewOne1234567890

+1

Ich habe einen Tippfehler gemacht, bearbeitet.Ich habe direkt hier codiert, so dass es einige Fehler geben kann. Nur eine Frage, es ist dein erstes Mal mit PHP und JS? Wenn ja, werde ich versuchen, ein wenig mehr zu erklären – rick

+0

ja, es ist mein erstes Mal. Warum kann ich diesen JSON nicht mit POST in PHP speichern und bekomme den gleichen JSON mit GET? – thenewOne1234567890