如何从PHP中的JSON对象检索值

时间:2013-05-02 18:23:03

标签: php javascript jquery ajax json

我现在尝试了很多次,使用不同的方法,但没有一种方法适合我,所以我问这个问题。

我有一个小表格,其中包含4条信息,一个人名,名字,中间名和姓。当我点击一个按钮时,会形成一个JSON对象,并通过jQuery.ajax方法作为发布数据发送。

JSON发送到PHP文件:

{
    "title": "Mr", 
    "firstName":"Banana",
    "middleName":"Slippy",
    "lastName":"McDougle"
}

按下按钮时调用Ajax:

    function insertPerson(obj, callback){
        $.ajax({
            type: "POST",
            data: "json=" + JSON.stringify(obj),
            url: "insertData.php",
            success: function(obj){
                if (callback){ callback(obj) };
            },
            error: function(error){
                console.log("Error:");
                console.log(error);
            }
        });
    }

我传入一个Javascript对象,然后将其变为stringyfied并作为参数名称'json'发布。

在我的php文件中,我将发布的字符串分配给变量,名为$ json,然后使用json_decode()进行解码,做一些时髦的业务,并将响应发送回浏览器。

insertData.php:

require ('connect.php');
header('Content-type: application/json');

$json_string = $_POST['json'];
$json = json_decode($json_string);
...do server related inserts/selects etc...
echo json_encode($json->title);

目前我只想返回在post请求中发送的json对象的title属性,但是我返回的任何内容都返回null。如果我回显字符串,而不解码它,那么我得到以下内容:

{\"title\":\"Mr\",\"firstName\":\"Banana\",\"middleName\":\"Slippy\",\"lastName\":\"McDougle\"}

如果我尝试使用以下方法提取值:    $ title = $ json-> title; 并将其放入MYSQL语句中,它被插入为null或空白,没有任何内容被输入。

我做错了吗?或者我有一个过时的PHP版本来处理JSON?非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

为什么要将JSON发送到PHP脚本?使用查询字符串有什么问题?

$.ajax({
    type: "POST",
    data: obj,
    url: "insertData.php",
    success: function(obj){
        if (callback){ callback(obj) };
    },
    error: function(error){
        console.log("Error:");
        console.log(error);
    }
});

这会将obj转换为查询字符串,然后您可以$_POST['firstName']$_POST['lastName']

答案 1 :(得分:0)

我认为这是最好的拍摄对象。

jQuery Ajax POST example with PHP