Javascript 使用ajax/json时出现JQuery错误。语法错误?
首先,我应该说这是我使用AJAX的第一天,所以我为自己的愚蠢行为道歉 我使用jQuery1.8.2和PHP5,用数据填充页面 这是我的javascript函数:Javascript 使用ajax/json时出现JQuery错误。语法错误?,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,首先,我应该说这是我使用AJAX的第一天,所以我为自己的愚蠢行为道歉 我使用jQuery1.8.2和PHP5,用数据填充页面 这是我的javascript函数: function requestData(dataType) { $.ajax({ type: 'POST', datatype: 'json', error: function(obj, txt, err){alert('error:' + txt + ', Thrown' + err);}, url: 'charts/plotLiv
function requestData(dataType) {
$.ajax({
type: 'POST',
datatype: 'json',
error: function(obj, txt, err){alert('error:' + txt + ', Thrown' + err);},
url: 'charts/plotLiveData.php?dataType='+dataType+'&sid=3868&pos=2&start=1366066800&end=1371204000',
success: function(data){alert(data);},
cache: false
});
PHP文件plotLiveData.PHP是本例的精简版本,它是:
<PHP
echo "[[Date.UTC(2013,5,14,7,00),33981.56442],
[Date.UTC(2013,5,14,8,00),33981.56309],
[Date.UTC(2013,5,14,9,00),33981.56376],
[Date.UTC(2013,5,14,10,00),33981.56347],
[Date.UTC(2013,5,14,11,00),33981.56177]]";
?>
警报框中的错误文本告诉我:
错误:parsererror
抛出:SyntaxError:JSON.parse:意外字符
我现在很困惑。
什么是无效字符?
方括号?但它是一个数组,在Firebug响应和JSON窗口中看起来还可以
这里的问题是什么,我不知所措?这是而不是您发送的json。JSON不能包含任何“可执行”代码,例如函数/对象调用 您可以将日期值作为unix时间戳(例如int)发送,然后在客户端解码json后将其转换为日期对象,但不能在该字符串中调用该日期
echo "[[12345,33981,56442]...." // ok
echo "[[Date.UTC(...),....]...." // utterly invalid
JSON可能是Javascript数据结构的文本表示形式,但它不是可执行的Javascript代码。这是一个。您正在寻找以下内容:
$array = array(
array(date_create('2013-05-14 07:00')->getTimestamp(), '33981.56442'),
array(date_create('2013-05-14 08:00')->getTimestamp(), '33981.56309'),
...
);
echo json_encode($array);
// [
// [1368529200,"33981.56442"],
// [1368532800,"33981.56309"],
// ...
// ]
文档:
- 像这样的东西可能适合你。确保使用给定的函数
不要手动生成json字符串。创建一个实际的php数组并将其传递给json\u encode()
您的响应不是有效的json。不能在JSON中调用函数。使用jsLint检查JSON是不好的。您可能应该做的是json_ncode()在PHP级别处理您的数据,然后回显它。您正在创建的JSON作为Date是无效的JSON。需要引用UTC(2013,5,14,7,00)
。我强烈建议您使用PHP构建数据结构,然后使用json_encode()
将其输出。虽然这会起作用(就像不抛出错误一样),'Date.UTC(..)
不是一种常见的处理模式。我试图消除json错误。还有其他方法来确定日期,但这不是主要问题。我假设类似于var stuff=eval(obj.date)代码>可能会有帮助。
$array = array(
array(date_create('2013-05-14 07:00')->getTimestamp(), '33981.56442'),
array(date_create('2013-05-14 08:00')->getTimestamp(), '33981.56309'),
...
);
echo json_encode($array);
// [
// [1368529200,"33981.56442"],
// [1368532800,"33981.56309"],
// ...
// ]
<?php
echo json_encode(
array(
array('date' => 'Date.UTC(2013,5,14,7,00)', 'point' => 33981.56442),
array('date' => 'Date.UTC(2013,5,14,8,00)', 'point' => 33981.56309),
array('date' => 'Date.UTC(2013,5,14,9,00)', 'point' => 33981.56376),
array('date' => 'Date.UTC(2013,5,14,10,00', 'point' => 33981.56347),
array('date' => 'Date.UTC(2013,5,14,11,00)', 'point' => 33981.56177)
)
);
?>