使用json解码将json序列化字符串分配到php数组中

使用json解码将json序列化字符串分配到php数组中,php,jquery,json,Php,Jquery,Json,我想将JSON使用$.ajax序列化的字符串传递给外部php文件,以分配给常规数组 这是我目前得到的结果,它没有显示taskContent数组的第0个索引 JQuery代码: $(".json").click(function() { var allTaskArr = []; $('#appendTask .taskbox').each(function(index,domEle){ //domEle == this

我想将JSON使用$.ajax序列化的字符串传递给外部php文件,以分配给常规数组

这是我目前得到的结果,它没有显示taskContent数组的第0个索引

JQuery代码:

$(".json").click(function() {
            var allTaskArr = [];
            $('#appendTask .taskbox').each(function(index,domEle){
            //domEle == this
            allTaskArr[index] = $(domEle).val();
            });
        var allTaskStr = '{"taskContent":'+JSON.stringify(allTaskArr)+'}';

            $.ajax({
                url:'testjson.php',
                type:"POST",
                datatype:'json',
                data:allTaskStr

            });
 });
 $jsonContent = $_POST['taskContent'];
 $taskContent = json_decode($jsonContent,true);         
 echo $taskContent[0];
PHP文件:

$(".json").click(function() {
            var allTaskArr = [];
            $('#appendTask .taskbox').each(function(index,domEle){
            //domEle == this
            allTaskArr[index] = $(domEle).val();
            });
        var allTaskStr = '{"taskContent":'+JSON.stringify(allTaskArr)+'}';

            $.ajax({
                url:'testjson.php',
                type:"POST",
                datatype:'json',
                data:allTaskStr

            });
 });
 $jsonContent = $_POST['taskContent'];
 $taskContent = json_decode($jsonContent,true);         
 echo $taskContent[0];

在此编辑之前忽略此帖子

这是你的问题:

var allTaskStr = '{"taskContent":'+JSON.stringify(allTaskArr)+'}';
应该是:

var allTaskStr = {"taskContent":JSON.stringify(allTaskArr)};
数据:,需要一个对象,而您正在向它发送一个字符串。

您说:

@Spudley我收到了“未定义索引:taskContent”消息

原因是PHP没有收到名为
tastContent
的post变量

这是因为您没有正确发送JSON

在jQuery代码中,您将生成一个JSON字符串,然后将其放入ajax调用的
data
元素中。事实上,
data
元素应该是一个对象,而不是一个json字符串;它将其编码为json本身,因此如果您首先给它json,PHP程序将收到一个双重编码字符串——即一个json字符串,它将解码为另一个json字符串

因此,与此相反:

var allTaskStr = '{"taskContent":'+JSON.stringify(allTaskArr)+'}';
。。。您需要将数据作为对象发送,如下所示:

var allTask = {taskContent:allTaskArr};
或者直接把它放到ajax调用中:

data : {taskContent:allTaskArr}

希望这能帮助您走上正确的道路,并解释问题所在。

您是否确保在PHP中获得json?什么是打印内容($taskContent);显示?使用打印($taskContent);在php文件中确认0索引是否存在。我似乎无法从我的php文件中获得任何输出。带有
警报(allTaskStr)
在JQuery文件中,我会得到{“taskContent”:[“text-1”,“text-2”]},然后我会将text-1和text-2分配给PHP文件中taskContent数组的index-0和1。愚蠢的问题,但需要问:您的PHP程序是以
@Spudley-Yup开始的吗。谢谢,非常感谢Spudley。我不知道
data
元素需要的是对象而不是json字符串!我解决问题的第二件事是在我的PHP文件中,我使用
file\u get\u contents('php://input“)
以接收对象。