2011-11-02 58 views
3

我試圖用Ajax發送一個POST請求,但我無法獲取以PHP發送的值。這裏是我的JavaScript代碼:在PHP中從Ajax POST請求獲取數據?

$.ajax({ 
    url: "updatedata.php", 
    type: 'post', 
    data: JSON.stringify(jsonData), 
    contentType: 'application/json', 
    dataType: 'json', 
    success: function(data, status, xhr) 
    { 
     //... 
    } 
}); 

我想用PHP訪問數據。像這樣?

$data = $_POST['data']; 

我的數據:

{"UID":"00a3b1b0-03b4-11e1-be50-0800200c9a66","Firstname":"Bastian","Lastname":"Sander","UserPenaltys":{"Penalty1":"110","Penalty10":"200","Penalty11":"210","Penalty12":"220","Penalty13":"230","Penalty14":"240","Penalty15":"250","Penalty16":"260","Penalty2":"120","Penalty3":"130","Penalty4":"140","Penalty5":"150","Penalty6":"160","Penalty7":"170","Penalty8":"180","Penalty9":"190"},"PenaltyCounter":16} 

我嘗試這樣做:

$.post("updatedata.php", JSON.stringify(UserData), function (data) { 
}, "json"); 

$_POST['Firstname']是空的...

+1

你想用PHP解析JSON,所以只檢查谷歌,你會發現這:http://webhole.net/2009/08/31/how-to-read-json-data-with-php/ – lc2817

+0

製作一個'print_r($ _ POST)'並看看數據是怎樣的。我假設你必須以不同的方式發送它。 jQuery文檔應該提供足夠的信息。 –

+0

PHP不運行客戶端,你誤解了web棧 –

回答

2

第一:你不需要使用JSON.stringify

號之二:訪問他們像這樣:

$uid = $_POST['UID']; //...etc

+0

ahh thx。 JSON.stringify不是必需的。謝謝。 – bsand

+0

@ user1023663刪除stringify,那麼你的所有代碼應該工作。 – Neal

3

爲什麼不使用$.post()?其格式爲:

$.post(<URI string>, <postdata object>, <handler>, <datatype>); 

然後像對待任何其他形式的交於PHP的數據(即使用$_POST變量)。

2

$data = $_POST['data']; - 這是錯誤的。

$_POST['UID']$_POST['Firstname']$_POST['Lastname']等只能是avalable

它可以是你甚至沒有做出一些操作這樣的:JSON.stringify(jsonData);可能會這樣工作:$.ajax({..., data: jsonData, ...});

你應該嘗試啓動一些流量分析器,例如在谷歌瀏覽器(標籤網絡)中按F12,或在Opera中選擇歌劇蜻蜓或其他流量分析器並解決一些問題: 1.請求發送到右腳本並且響應不是404錯誤 2.接收到的數據是否有正確的格式? (網絡選項卡上的谷歌瀏覽器,點擊請求更多信息)

我認爲問題將通過此兩個步驟來解決=)