나는 Postman (Chrome에서 열리지 않는)을 가지고 있으며 원시 json을 사용하여 POST 요청을 수행하려고합니다.
본문 탭에서 “원시”를 선택하고 다음 본문과 함께 “JSON (application / json)”을 선택했습니다.
{
"foo": "bar"
}
헤더에는 1이 있습니다. Content-Type: application/json
PHP 측에서는 지금 막하고 print_r($_POST);
있는데 빈 배열이 생겼습니다.
jQuery를 사용하고 다음을 수행하는 경우 :
$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});
예상대로 얻고 있습니다.
Array
(
[foo] => bar
)
그렇다면 Postman과 함께 작동하지 않는 이유는 무엇입니까?
Postman 스크린 샷 :
및 헤더 :
답변
jQuery
원시 읽기 와 달리 JSON
PHP에서 디코딩해야합니다.
print_r(json_decode(file_get_contents("php://input"), true));
php://input
요청 본문에서 원시 데이터를 읽을 수있는 읽기 전용 스트림입니다.
$_POST
양식 변수이므로 다음을 사용 하여 form
라디오 버튼 으로 전환해야 postman
합니다.
foo=bar&foo2=bar2
원시 게시하려면 json
로 jquery
:
$.ajax({
"url": "/rest/index.php",
'data': JSON.stringify({foo:'bar'}),
'type': 'POST',
'contentType': 'application/json'
});
답변
답변
meda의 대답은 완전히 합법적이지만 코드를 복사하면 오류가 발생했습니다!
어딘가에 "php://input"
잘못된 문자가 있습니다 (따옴표 중 하나 일 수 있습니까?).
"php://input"
수동으로 코드를 입력했을 때 작동했습니다. 알아내는 데 시간이 걸렸습니다!
답변
나는 같은 문제에 직면하고 있었고 다음 코드가 나를 위해 일했습니다.
$params = (array) json_decode(file_get_contents('php://input'), TRUE);
print_r($params);
답변
Postman 기본 앱을 설치하세요. Chrome 확장 프로그램은 더 이상 사용되지 않습니다. (내 창이 자체 창에서 열렸지만 여전히 Chrome 앱으로 실행 됨)