Javascript AJAX-返回JS数组并在成功事件中使用它
你好,我有一个奇怪的问题。我正在进行AJAX调用以获取对象数组,请求返回: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
[{
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'
}