2011-11-02 62 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.接收到的数据是否有正确的格式? (网络选项卡上的谷歌浏览器,点击请求更多信息)

我认为问题将通过此两个步骤来解决=)