2

我想将已由 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

            });
 });

PHP 文件:

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

2 回答 2

1

你说:

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

这样做的原因是 PHP 没有收到名为tastContent.

原因是您没有正确发送 JSON。

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

所以代替这个:

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

...您需要将数据作为对象发送,如下所示:

var allTask = {taskContent:allTaskArr};

或者直接将其放入 ajax 调用中:

data : {taskContent:allTaskArr}

希望这有助于您走上正轨并解释问题所在。

于 2013-07-31T06:44:10.820 回答
1

在此编辑之前忽略此帖子。

这是你的问题:

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

应该:

var allTaskStr = {"taskContent":JSON.stringify(allTaskArr)};

data:, 需要一个对象,而您正在向它发送一个字符串。

于 2013-07-30T13:55:58.500 回答