Javascript AJAX-返回JS数组并在成功事件中使用它

Javascript AJAX-返回JS数组并在成功事件中使用它,javascript,php,jquery,arrays,ajax,Javascript,Php,Jquery,Arrays,Ajax,你好,我有一个奇怪的问题。我正在进行AJAX调用以获取对象数组,请求返回: [{ title: 'xxx xxx xx ', start: '2015-11-23', end: '2015-11-24', color: '#99a5a8', cust

你好,我有一个奇怪的问题。我正在进行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对象数组。

:


添加json头
头('Content-Type:application/json')
到ajaxed php&回显json编码的数据
回显json_编码(数组('data'=>$data))

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


我所要做的就是
eval(data)
,它将我的文本转换成一个合适的JS对象数组。

更新你的问题,使其包含
calendar\u ajax.php
这不是有效的JSON符号否,因为OP已经设置了
数据类型:“JSON”
,而且如果服务器返回JSON:
如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将生成XML,在1.4中JSON将生成JavaScript对象…
EDIT:但是OP没有返回有效的JSON,所以可能…如果我执行JSON.parse(data),我不确定这是否可以处理我收到意外的token t错误。我正在尝试使用作为js脚本一部分返回的文本。因此,我可以执行类似“var events=data”的操作@uFlock尝试删除
dataType
选项,然后尝试使用
var json=json.parse(json.stringify(data));
。或者更好,从服务器返回有效的json。。。(在本例中保留
数据类型
,不在success@A.Wolff如果我尝试
var json=json.parse(json.stringify(data))
然后我又回到了开始的地方。有效的json是什么意思?@uFlock
有效的json是什么意思?
json是一个有着非常严格规则的符号对象。您在这里没有遵循这些规则。您的JS对象不是json有效的符号对象。这是有效的:
success: function(data){
    var json = JSON.parse(data);
    console.log(json[0]["start"]); //will output '2015-11-23'
}