Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax/json时出现JQuery错误。语法错误?_Javascript_Php_Jquery_Ajax_Json - Fatal编程技术网

Javascript 使用ajax/json时出现JQuery错误。语法错误?

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

首先,我应该说这是我使用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/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)
          )
      );
      ?>