PHP POST和获取JSON数据

时间:2016-06-16 14:58:09

标签: javascript php json request

我尝试做一个非常简单的Web服务器,可以发送和获取JSON数据。

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();
    }

?>

我的主要问题是如何将JSON发送到我的php服务器。安藤我怎么能检查这个。最后我只想保存Json数据并将其发回。

Send JSON data from Javascript to PHP?

我在上面的链接中尝试。

更新:像rick

JavaScript:两个按钮一个用于GET一个用于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();
        }


    ?>

1 个答案:

答案 0 :(得分:1)

对于POST部分,使用application / x-www-form-urlencoded更为常见,因此您可以将POST数据视为表单。

&#xA;&#xA;

响应你必须设置一个回调,因为你的呼叫是异步的。

&#xA;&#xA;

尝试类似的东西

&#xA;&#xA;
  var url =“https://...../apps/server.php”;&#xA; var xmlHttp = new XMLHttpRequest();&#xA;&#xA; xmlHttp .onreadystatechange = function(){& #xA; if(xmlHttp.readyState == 4&amp;&amp; xmlHttp.status == 200){&#xA;警报(xmlHttp.responseText);&#XA; }&#xA;};&#xA; xmlHttp.open(“POST”,url,true); &#xA; xmlHttp.setRequestHeader(“Content-type”,“application / x-www-form-urlencoded”);&#xA; xmlHttp.send(“jsonData =”+ JSON.stringify(jsondata));&# xA;  
&#xA;&#xA;

对于php

&#xA;&#xA;
  if(!isset($ _ POST) ){&#XA; $ json_data = $ _POST [“jsonData”];&#xA; echo $ json_data;&#xA;退出();&#xA;}&#xA;  
&#xA;&#xA;

这比我在PHP中写一行还要长10年但我希望这个概念很清楚。

&#xA;