2012-04-29 39 views
1

我在創建一個對象並使用jquery.json將 轉換爲json後,通過ajax調用php腳本(getNum.php)。現在我想處理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

你有什麼文件中的'print_r'聲明?你的頁面包含javascript或由javascript(generateBing.php)調用的頁面? – jedwards 2012-04-29 00:40:42

+0

爲什麼你有'dataType:「html」'? – 2012-04-29 00:41:12

+0

generateBing.php不相關。 getNum.php包含print_r代碼 – Tom 2012-04-29 00:41:24

回答

2

,你需要將它發送「數據」爲好。

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

否則,你所要做的print_r($_POST)

+0

我懷疑jQuery會處理髮布分層數據。 – 2012-04-29 00:48:47

+0

你會想要移除contentType,因爲這樣可以阻止它成爲application/json。 – loganfsmyth 2012-04-29 00:49:23

+0

@loganfsmyth - 刪除兩者,因爲它們通常不需要。如果它是一個有效的json對象,jQuery將解決它。 – adeneo 2012-04-29 00:51:51

0

因爲你是直接張貼JSON對象,對$ _ POST沒有參數的名稱。您需要閱讀POST請求的原始內容。試試這個:如果您使用print_r($_POST['data'])展示的內容

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

沒有任何數據是空的 – Tom 2012-04-29 00:45:16

+0

在那裏,現在應該工作。正如你所提到的,contentType影響了所有這些。既然你有JSON內容類型,PHP不能自動處理它。您可以閱讀請求數據並將其處理爲PHP變量。 – loganfsmyth 2012-04-29 00:59:05