json_decode不解释数组

时间:2011-10-02 12:43:39

标签: php javascript ajax json

我有一个以下的JSON字符串,通过AJAX到达服务器:

{"Names":"[{0:'asdasd'}]","Values":"[{0:'ad'}]"}

如您所见,名称和值旨在保存数组。问题是,当我打电话时 $data = json_decode(stripslashes($_POST['data']), true); $data['Names'][0]我没有按照自己的意愿得到'asdasd',而是"["符号。问题出在哪里?

P.S。 JS代码,发送JSON字符串:

            var arr_names = "[";
        names.each(function(i){
            arr_names += "{" + i + ":'" + $(this).val() + "'}";
            if (i < names.length-1) arr_names += ",";
        });
        arr_names += "]";

        var arr_val = "[";
        values.each(function(i){
            arr_val += "{" + i + ":'" + $(this).val() + "'}";
            if (i < values.length-1) arr_val += ",";
        });
        arr_val += "]";

        var el = { "Names" : arr_names, "Values" : arr_val };
        el = encodeURIComponent(JSON.stringify(el));

        $.ajax({
            type:"POST",
            dataType:"html",
            data:"m=1&t="+type+"&data="+el,
            url:plugin_path+"option-proc.php",
            success: function(rsp){
                $("#result").html(rsp);
            }
        });

名称和值是由类选择的一组文本字段。 发送 m t 变量与案例完全无关:)

1 个答案:

答案 0 :(得分:2)

字符串编码错误。 $ data ['Names']是一个字符串,所以通过访问[0]你将获得第一个字符。

如果你再次json_decode $ data ['Names']你应该得到一些工作,虽然实际上也是错误的ecoded(作为一个带有数字索引而不是数组的对象。)我很确定严格的json解析器会在那个内部字符串上失败。

我建议修复任何产生它的东西,而不是在解码方面。