从浏览器接收php中的json帖子

时间:2015-06-10 17:07:35

标签: php json post

我正在尝试使用此php代码接收和打印json:

<?php

$data = json_decode(file_get_contents('php://input'), true);
print_r($data);

?>

我没有收到或打印任何数据。但如果我使用这个ajax:

<script    src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">    </script>
<script>
(function($){
    function processForm( e ){
        $.ajax({
               url:'http://mydyndns:8010/has/input_parameters_startReg.php',
            dataType: 'json',
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify({ DeviceID: 23, ForceReg: 0, StartTime: "10/06/2015 17:45"}),
             success: function (data) {
        },
        error: function (e) {
            alert(e.responseText);
        },
    });

        e.preventDefault();
    }

    $('#my-form').submit( processForm );
})(jQuery);

它正常工作,我在浏览器中打印了发布的数据。我怎样才能改变我的php,所以从浏览器直接点击会给我ajax给出的结果?

2 个答案:

答案 0 :(得分:2)

函数parse_str将与$ _SERVER ['QUERY_STRING']

结合使用
<?php
 parse_str($_SERVER['QUERY_STRING'], $output);
 $json = json_encode($output);
 echo $json;
?>

答案 1 :(得分:0)

我不认为您能够使用GET获取它,因为php://输入似乎只读取POST数据。如果您希望能够使用GET数据,可以参考$ _GET global:

print_r($_GET);

请注意,您也可以使用$ _POST代替php://输入,但这里有一个问题/答案,其中讨论了一些:

PHP "php://input" vs $_POST

编辑:哎呀,我看到这是在我度过美好时光的时候得到了解答。