AJAX - 返回JS Array并在成功事件中使用它

时间:2015-11-26 11:59:43

标签: javascript php jquery arrays ajax

您好我有一个奇怪的问题。我正在进行AJAX调用以获取对象数组并返回请求:

[{
                        title: 'xxx xxx xx ',
                        start: '2015-11-23',     
                        end: '2015-11-24',
                        color: '#99a5a8',
                        customer_name: 'xxx xxx',
                        priority: 0,
                        half_day_dates: ['1968-01-01']
                    },
                    {
                        title: 'xxxx xx xxx ',
                        start: '2015-11-23',     
                        end: '2015-11-24',
                        color: '#99a5a8',
                        customer_name: 'xxx',
                        priority: 0,
                        half_day_dates: ['1968-01-01']
                    },
                    {
                        title: 'xxx xxx xxx ',
                        start: '2015-11-23',     
                        end: '2015-11-24',
                        color: '#99a5a8',
                        customer_name: 'xxx',
                        priority: 1,
                        half_day_dates: ['1968-01-01']
                    }];

我的AJAX调用如下所示:

$.ajax({
        type: 'POST',
        url: 'ajax/calendar_ajax.php',
        data: events_to_render,
        dataType: 'json',
        success: function(data)
        {      

            console.log(data);
        }
    }).fail(function() {

    });

所以问题是JS认为返回结果是某种类型的HTML,因为console.log(data)将它作为文本而不是JS数组输出,所以我不能遍历对象数组。有任何想法吗? (我确信我错过了一些简单的事情。)

解答:

感谢大家帮助我,最终解决方案非常简单:

我所要做的只是eval(data),它将我的文本转换为适当的JS对象数组。

3 个答案:

答案 0 :(得分:3)

See JSON.parse()

success: function(data){
    var json = JSON.parse(data);
    console.log(json[0]["start"]); //will output '2015-11-23'
}

答案 1 :(得分:1)

将json标题header('Content-Type: application/json');添加到a​​jaxed php&回显json编码数据echo json_encode(array('data' => $data));

答案 2 :(得分:0)

感谢大家帮助我,最终解决方案非常简单:

我所要做的只是eval(data),它将我的文本转换为适当的JS对象数组。