我正在使用以下jquery ajax调用:
$(document).ready(function () {
submitAct();
function submitAct(){
var alldata = [];
alldata.push( {
"pid": 'd2a7d886-6821-3eaa-079f-fbe278c6a16a',
"title": 'Fun with Gophers',
});
$.ajax({
dataType: "jsonp",
type: 'POST',
url: '//[server path]/act',
data: "data=" + JSON.stringify(alldata),
});
}
});
在服务器上,$ _POST [data]的结果显示为:
[{"pid":"d2a7d886-6821-3eaa-079f-fbe278c6a16a","title":"Fun with Gophers"}]
我无法访问“pid”和“title”的键和相关值。有人请提供一些见解吗?我尝试了类似下面的事情,但没有取得任何成功:
$_POST['title']
$data = json_decode( $_POST['data']);
$data->title
谢谢!
答案 0 :(得分:2)
几点建议:
首先,您不必要地将数据对象包含在数组中。现在访问它:
$data = json_decode( $_POST['data']);
$data=$data[0];/* access object in array*/
$data->title;
$ .ajax的默认内容类型为application/x-www-form-urlencoded; charset=UTF-8
...与发送常规表单完全相同。可以像对待表单控件name
一样考虑数据对象中的每个键。
无需JSON.stringify发送。 jQuery将为您序列化对象和数组
您可以像这样发送:
var alldata = {
"pid": 'd2a7d886-6821-3eaa-079f-fbe278c6a16a',
"title": 'Fun with Gophers',
};
$.ajax({
dataType: "jsonp",
type: 'POST',
url: '//[server path]/act',
data: alldata
});
然后在php:
$title=$_POST['title'];
答案 1 :(得分:0)
将ajax请求的data
部分更改为以下内容:
$.ajax({
dataType: "jsonp",
type: 'POST',
url: '//[server path]/act',
data: {"data": JSON.stringify(alldata)},
});
现在,您可以通过相应的php文件中的$_POST["data"]
访问发送的内容。
示例:
$json = json_decode($_POST["data"]);
var_dump($json[0]->{"title"}); // [0] because of the array
答案 2 :(得分:0)
$a = json_decode($_POST['data']);
print_r($a[0]->pid);