如何访问发送到php脚本的jQuery.ajax()的返回数据

时间:2013-11-10 20:48:59

标签: javascript php jquery ajax

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

谢谢!

3 个答案:

答案 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);