2012-04-29 3 views
1

나는 ajax를 통해 php 스크립트 (getNum.php)를 호출하고 객체를 만든 후 jquery.json을 사용하여 을 json으로 바꾼다. 이제 PHP 측에서 객체를 처리하고 싶습니다. print_r($_POST['data'])은 작동하지 않으며 다른 시도도하지 않았습니다.jQuery ajax 호출에서받은 PHP 구문을 사용하여 구문 분석하는 방법

// create object 
    var bing= new Object(); 
    bing.id = 99; 
    bing.nameList = getBingList(); 

    //create pdf 
    $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "getNum.php", 
    dataType: "html", 
    data: $.toJSON(bing), 
    success: function(data){ 
     alert(data); 
     window.location = "generateBing.php?num="+data 
    } 

    }); 
+0

print_r($_POST)? 자바 스크립트 또는 자바 스크립트 (generateBing.php)에 의해 호출되는 페이지가 포함 된 페이지? – jedwards

+0

왜'dataType : "html"'이 있습니까? –

+0

generateBing.php와 관련이 없습니다. getNum.php는 print_r 코드를 가지고 있습니다 – Tom

답변

2

당신이 내용을 표시 할 수 print_r($_POST['data'])를 사용하는 경우, 당신은뿐만 아니라 "데이터"를 보내해야합니다.

$.ajax({ 
    type: "POST", 
    url: "getNum.php", 
    data: {data: $.toJSON(bing)}, 
    success: function(data){ 
     alert(data); 
     window.location = "generateBing.php?num="+data 
    } 
}); 

그렇지 않으면 당신이해야 할 당신의`print_r` 문을합니까 어떤 파일

+0

jQuery가 계층 적 데이터 게시를 처리 할 것 같지 않습니다. –

+0

contentType을 제거하려는 경우 application/json이되지 않게됩니다. – loganfsmyth

+0

@loganfsmyth - 일반적으로 필요하지 않으므로 둘 다 제거되었습니다. 유효한 json 객체라면 jQuery가 알아낼 것입니다. – adeneo

0

당신이 직접 JSON 객체를 게시되기 때문에이 $ _POST에 대한 인수 이름이 없다 :

이 내 코드입니다. POST 요청의 원시 내용을 읽어야합니다. 이 시도 :

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

아무것도 없습니다. 데이터가 비어 있습니다. – Tom

+0

이제 작동합니다. 언급 한대로 contentType은이 모든 것을 적용합니다. JSON 콘텐츠 유형이 있기 때문에 PHP는 자동으로 처리하지 못합니다. 요청 데이터를 읽고이를 PHP vars로 처리하는 것은 당신에게 달려 있습니다. – loganfsmyth

관련 문제