PHP json_encode作为数组字符串返回,但没有正确地在JavaScript中转换为数组

时间:2015-09-22 20:32:13

标签: javascript php arrays json

我发出$ .post请求来提交数据并返回无效数据。这是$ .post请求:

    $('#submitAll').click(function(){
        $.post("php/entries/submitAndReload.php", {array : dataObject.dataArray}, function(data){

            alert(data); // alerts: "[[“0”, “0”,””,””, “0”, “0”, “0”, “0”,”No Style”]]"
            dataObject.dataArray = data;

            $.post("php/entries/stageArea.php", {array : dataObject.dataArray}, function(data){
                $('#stageArea').html(data);
            });
        });
    });

dataObject.dataArray是一个双数组,alert(data)警告后续$ .post请求的正确格式,但第二个$ .post请求的输出看起来像我传入以下内容阵列:[[ "[" ]]。第一个字段获得"[",其他字段无法获取数据。

我不确定这里发生了什么以及如何将返回的data正确存储到dataObject.dataArray

这里发生了什么?

2 个答案:

答案 0 :(得分:2)

纠正这一行:

dataObject.dataArray = data;

对此:

dataObject.dataArray = JSON.parse( data );

你需要解析JSON,直到解析它只是一个字符串。

答案 1 :(得分:1)

dataType参数添加到$.post

当设置为'json'时,jQuery知道从json字符串解析为对象/数组

$.post(url, postData, function(data){
     // handling code
     alert($.type(data)); //"array"

},'json');

如果您在服务器上设置了正确的内容类型标题,那么它也有帮助

参考:$.post docs