2014-08-28 1 views
-5

AJAX를 통해 PHP 스크립트에 일부 JSON 데이터를 제출할 때. json_decode을 호출 할 필요없이 JSON 데이터가 자동으로 디코딩되는 것으로 보입니다. 왜 이런 일이 일어나는 걸까요?PHP가 자동으로 JSON 데이터를 디코딩합니까?

JS :

$(function(){ 
    var m={"name":"kikim","age":33}; 

    $.post(
     'xxx.php', 
     {a:m}, 
     function(){ 
      alert(data.name); 
     } 
    ); 
}); 

PHP :

echo($_POST['a']['name']); 

결과 :

kikim

+3

감사를 공유! 위의 성명서를 가지고 가야 할 질문이 있습니까? – PeeHaa

+0

예, json 데이터를 보낼 때 – mizanoviche

+0

디코딩하지 않고 PHP가 json 형식을 포함하는지 알고 싶습니다. – mizanoviche

답변

0

현재 데이터를 전송하는 방식은 전송되기 전에 JSON으로 변환되지 않습니다. 대신 JavaScript 객체가 HTTP Post 변수로 변환됩니다. 제출하기 전에 데이터를 JSON으로 변환하려면 JSON.stringify() 함수를 사용하고 출력 된 문자열을 POST 매개 변수로 전달하면됩니다. 대신 JSON 인코딩 된 데이터를 보내려면

그래서 당신이 뭔가를 할 수 있습니다 :

$(function(){ 
    var m={"name":"kikim","age":33}; 
    $.post(
     'xxx.php', 
     JSON.stringify(m), 
     function(){ 
      alert(data.name); 
     } 
    ); 
}); 

그리고 PHP에서 무엇인가 :

$json = json_decode(file_get_contents('php://input')); 
+0

예를 들어 이해 주셔서 감사합니다, 그래서 PHP는 obj 자바 스크립트, json 데이터를 포함하지만, 물론 우리가 그들을 보낼 때 서버에! – mizanoviche

+0

내가 말한 것은 사실입니까? – mizanoviche

+0

JQuery는 전송하기 전에 JavaScript 객체를 HTTP Post 변수로 자동 변환하여 PHP가 기본적으로 이해합니다. – AeroX

관련 문제