0

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

我有一个小表格,包含 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?非常感谢您的帮助。

4

2 回答 2

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']and $_POST['lastName']

于 2013-05-02T18:41:52.563 回答
0

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

使用 PHP 的 jQuery Ajax POST 示例

于 2013-05-02T18:33:41.983 回答