2015-06-10 2 views
1

Я пытаюсь получить и распечатать JSON с этим PHP код:Получите JSon пост в PHP из браузера

<?php 

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

?> 

Я не получаю или печать любых данных. Но если я использую этот Аякс:

<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?

+0

Переданы ли какие-либо параметры первому скрипту? Я имею в виду, вы запускаете его, как test.php? A = 123? Если вы не отправите ему никакого ввода, он ничего не выведет –

+0

Да, я запускаю его так: http: //mydyndns/has/input_parameters_startReg.php? StartTime = 10/06/2015% 2017: 50 & ForceReg = 0 & DeviceID = 23, но я ничего не получаю –

+1

Похоже, что php: // ввод читает только данные POST [как написано здесь] (http://stackoverflow.com/a/2731431/4177605) –

ответ

2

Функция parse_str будет выполнять работу в сочетании с $ _SERVER [ «QUERY_STRING»]

<?php 
parse_str($_SERVER['QUERY_STRING'], $output); 
$json = json_encode($output); 
echo $json; 
?> 
+0

работал как очарование спасибо –

+0

Просто интересно, если использование parse_str с QUERY_STRING является лучше, чем использовать $ _GET? – Phil

+0

Хорошая точка, $ _GET на самом деле является $ output в этом случае, поэтому использование $ _GET сохранит этот один шаг –

0

Я не думаю, что вы будете в состоянии извлечь его с помощью GET, так как PHP: // вход, кажется, только читать данные POST. Если вы хотите, чтобы иметь возможность использовать данные GET, вы можете обратиться к $ _GET глобальный:

print_r($_GET); 

Обратите внимание, что вы также можете использовать $ _POST вместо PHP: // ввод, но вот вопрос/ответить здесь, что говорит о том, что некоторые из них:

PHP "php://input" vs $_POST

EDIT: К сожалению, я вижу, это был дан ответ, пока я принимал мое сладкое время.

Смежные вопросы