JQuery使用ajax/json错误.语法错误

JQuery error using ajax/json. Syntax Error?

本文关键字:错误 语法 json 使用 ajax JQuery      更新时间:2023-09-26

首先我应该说这是我第一天使用AJAX,所以我为我的愚蠢道歉。

我使用JQuery 1.8.2和PHP5,填充一个页面的数据。

这是我的javascript函数:
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]]";
?>

Firebug告诉我JSON响应具有正确格式的数据但是在jquery.js的第8416行有一个错误(使用未缩小的版本只是为了找到错误)这一行是:

xhr.send( ( s.hasContent && s.data ) || null );

警告框中的错误文本告诉我:错误:parsererror抛出:SyntaxError: JSON。解析:意外字符

我现在很困惑。无效字符是什么?方括号?但它是一个数组,它在Firebugs响应和JSON窗口中看起来很好。

这是什么问题,我很茫然吗?

这是不是 json你发送。JSON不能包含任何"可执行"代码,例如函数/对象调用。http://json.org/

你可以发送你的日期值作为unix时间戳(例如int),然后在客户端解码json后将其转换为date对象,但你不能在该字符串中调用date。

echo "[[12345,33981,56442]...." // ok
echo "[[Date.UTC(...),....]...." // utterly invalid

JSON可能是Javascript数据结构的文本表示,但它不是可执行的Javascript代码。

这是无效的JSON字符串。您要查找的内容如下:

$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"],
//   ...
// ]

文档:

  • DateTime
  • date_create()
  • ::getTimestamp()
  • json_encode()

这样的东西可能适合您。一定要用好给你的功能。

json_encode

<?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)
    )
);
?>
相关文章: