我正在尝试使用JSON将动态内容添加到我的网页,使用javascript。有些事情是不正确的,我有问题弄清楚它可能是什么。在firebug中,我可以看到JSON数据已经按照它应该进行了检索。在“DOM”下查看Firebug时,我访问该页面的URL(我创建的实际页面,而不是JSON数据的URL)显示为红色(参见下面的屏幕截图)。这是我的javascript:
$(document).ready(function() {
$('#target').click(function() {
alert("At least I',m reached ");
$.getJSON('http://localhost/timereporting/phpscriptlibrary/get_remaining_hours.php', function(data) {
document.getElementById('errorDiv').innerHTML = "Divtext";
alert("Inside getJason");
});
alert("At least I',m done ");
});
这是我的php文件的重要部分:
$json_string = "{\"activities\": ";
$json_string = $json_string."[";
for ( $counter = 0; $counter < $num; $counter += 1) {
$json_string = $json_string."[".mysql_result($rows,$counter,'date').", \"".mysql_result($rows,$counter,'activity_id')."\", ".mysql_result($rows,$counter,'hours')."]";
if($counter != ($num-1)){
$json_string = $json_string.", ";
}
}
$json_string = $json_string."]}";
echo $json_string;
我认为“echo”是将JSON数据“发送”到javascript的方式吗?
奇怪的是,在firebug中,JSON数据以两种不同的方式呈现。如果你看下面包含的截图,第二个截图有“1988”或类似的日期,而在第一个日期更完整,如“2010-12-10”。第一个截图描绘了它应该是什么,这就是我试图发送它的方式,显然它在某些时候就像这样收到了。
为什么我的div-tag没有更新日期或$ .getJSON内的警报没有被触发,只有前后的警报?
答案 0 :(得分:6)
您没有正确创建JSON字符串。每个字符串都必须用双引号括起来。但2010-12-10
不是,{jQuery将其评估为2010 - 12 - 10 = 1988
。
不要手动构建字符串,请使用json_encode
,例如:
$data = array();
while(($row = mysql_fetch_array($result))) {
$data[] = array($row['date'], intval($row['activity_id']), intval($row['hours']));
}
echo json_encode(array('activities' => $data));