【问题标题】:How to retrieve values from a JSON Object in PHP如何从 PHP 中的 JSON 对象中检索值
【发布时间】:2013-05-03 12:54:38
【问题描述】:

我已经尝试过很多次了,使用不同的方法,但没有一个对我有用,所以我问这个问题。

我有一个小表格,其中包含 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 对象,然后将其字符串化并作为参数名称“json”发布。

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

插入数据.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?非常感谢您的帮助。

【问题讨论】:

  • 你有什么版本的php?它的旧版本没有 json_decode 或 encode,但如果是这样的话,你会得到 php 错误。
  • 您是否启用了魔术引号?你试过了吗.. $json_string = stripslashes($_POST['json']);在解码字符串之前。

标签: php javascript jquery ajax json


【解决方案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']

【讨论】:

  • 我想先用 JSON 来尝试它,因为我将在以前的项目中实现它,该项目也使用 JSON 作为它的主要数据格式。我想让事情保持一致,如果涉及到它,那么我想我将不得不使用另一种格式。
  • 我将使用这种方法,结果证明,无论我尝试哪种方法,我都无法发送 JSON,要么我做错了,要么我有某种我不太了解的编码问题。我会坚持发送查询字符串,然后以 JSON 格式将响应发送回浏览器。
  • @AndrewBurns:我通常喜欢这种方法,因为 PHP 会为您“解析”它。另外,我认为 JSON 可能是 urlencoded,因为它是通过 GET 字符串发送的。
【解决方案2】:

我认为这是最适合你的镜头。

jQuery Ajax POST example with PHP

【讨论】:

  • 我尝试在解码后'print_r'我的 JSON 对象,并用
     标签包围它,但我在输出中只得到 '
    ' .
  • 您如何以及在 obj 中获得什么价值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多