2012-04-29 19 views
1

私はオブジェクトを作成し、jquery.jsonを使ってphpスクリプト(getNum.php)を呼び出すと、jsonに を送ります。今私はPHP側でオブジェクトを処理したい。 print_r($_POST['data'])は動作しません。jQueryのajax呼び出しから受け取ったjsonデータを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

をしなければなりませんか?あなたのページには、javascriptまたはJavaScript(generateBing.php)によって呼び出されるページが含まれていますか? – jedwards

+0

なぜあなたは 'dataType:" html "'を持っていますか? –

+0

generateBing.phpは関連していません。 getNum.phpにはprint_rコードが含まれています – Tom

答えて

2

を、あなたにも、「データ」と、それを送信する必要があります。

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

そうしないと、あなたが `print_r`文を持っていますどのようなファイルprint_r($_POST)

+0

私は、jQueryが階層データのポストを処理するのではないかと疑います。 –

+0

contentTypeを削除すると、application/jsonになりません。 – loganfsmyth

+0

@loganfsmyth - 通常は不要なので、両方とも削除されました。それが有効なjsonオブジェクトであれば、jQueryはそれを把握します。 – adeneo

0

あなたが直接JSONオブジェクトを掲載しているので、引数名は$ _POSTのためにありません。 POSTリクエストの生の内容を読む必要があります。このお試しください:あなたがコンテンツを表示するためにprint_r($_POST['data'])を使用している場合

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

何もありません。データは空です – Tom

+0

これで動作します。あなたが言及したように、contentTypeはこれすべてに影響します。あなたはJSONのコンテンツタイプを持っていたので、PHPはそれを自動的に処理できません。リクエストデータを読み、それをPHPバールに処理するのはあなた次第です。 – loganfsmyth

関連する問題