当数据库中的数据回显到ajax时,PHP损坏了

时间:2012-05-17 14:32:27

标签: php ajax database

我有这个问题,不知道是什么原因造成的。 当我从www.something.tld / index.html将数据加载到ajax我的ajax脚本时,它们没问题。但是当我从script.php加载数据时,首先从db中检索数据,然后回显这个数据,我的ajax以错误结束。但是数据输出是一样的!怎么了?

例如: index.html输出为“XXX” script.php输出为“XXX”,但在我的脚本中,我使用:

生成数据
echo $data[0]->var;

知道为什么会这样吗?当我从db检索数据然后将其回显时,就会发生这种情况。

Internet Explorer说:语法错误第281行,ttm / canvas.1.03.jgz中的字符163 这里是jgz http://www.freefilehosting.net/canvas103

的链接

我发现当我在php中使用anz函数时,ajax将无法正确解析输出! 这个解析好了:

$from ='05/17/2012 10:15:00';
  $to ='05/17/2012 10:30:00';
  $day ='5/17/2012';
echo '{ "dtstart": "'.$from.'", "dtend": "'.$to.'", "day": "'.$day.'" },';

未正确解析:

$from= preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_from);
$to  = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_to);
$day = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->day);
$from ='05/17/2012 10:15:00';
  $to ='05/17/2012 10:30:00';
  $day ='5/17/2012';
echo '{ "dtstart": "'.$from.'", "dtend": "'.$to.'", "day": "'.$day.'" },';

1 个答案:

答案 0 :(得分:0)

如果你使用json_encode()(就像你应该的那样)那么PHP会为你处理所有的编码怪癖。比如转义那些不可打印的字符和过去的0x7F。

echo json_encode(Array(
    "dtstart"=>$from,
    "dtend"=>$to,
    "day"=>$day
));

根据文件的编码情况,您可能需要首先通过utf8_encode()运行值,但这是您必须首先测试然后尝试的内容。