0

我正在使用以下 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

谢谢!

4

3 回答 3

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'];
于 2013-11-10T21:00:01.263 回答
0

data将 ajax 请求的部分 更改为以下内容:

$.ajax({
    dataType: "jsonp",
    type: 'POST',
    url: '//[server path]/act',
    data: {"data": JSON.stringify(alldata)},
});

$_POST["data"]现在您可以通过相应的 php 文件访问发送的内容。

例子:

$json = json_decode($_POST["data"]);
var_dump($json[0]->{"title"}); // [0] because of the array
于 2013-11-10T20:55:31.450 回答
0
$a = json_decode($_POST['data']);
print_r($a[0]->pid);
于 2013-11-10T20:57:45.883 回答