Json编码问题

时间:2010-12-15 04:11:12

标签: javascript ajax json

我有一个使用json_encode进行单个调用的PHP文件,但它不会转到javascript ...我已经尝试了一个多星期......也许它就在我的面前,我不喜欢看不到,所以我会在这里发布第二组眼睛,看看我不知道......有没有人看到问题,因为我真的没有...

这是json_encode让3数组调用javascript ...

$outarr['dayPowerP'] = $dayPowerP;
$outarr['monthPowerP'] = $monthPowerP;
$outarr['yearPowerP'] = $yearPowerP; 
echo json_encode($outarr);

这是php文件的输出...来自sql的ID和值就在那里....

{"dayPowerP":["13.2470"],"monthPowerP":["193.6810"],"yearPowerP":["989.6720"]}

这是显示帖子和Json的ajax ......

$(document).ready(function () {   
$('#datepicker').datepicker({maxDate: 0, dateFormat: 'yy-mm-dd', onSelect: function(dateText) {
            var myDate = $(this).datepicker('getDate');
            $('#apDiv1').html($.datepicker.formatDate('DD, d', myDate));
            $('#apDiv5').html($.datepicker.formatDate('MM', myDate));
            $('#apDiv7').html($.datepicker.formatDate('yy', myDate));           
            $.ajax({  
            type: "POST",   
            url: "clickdates.php",                  
            data: {choice: dateText}, 
            dataType: "json",  
            success: function(json_data) {  
            $('#apDiv2').html(json_data['dayPowerP']).show(); 
            $('#apDiv6').html(json_data['monthPowerP']).show();     
            $('#apDiv8').html(json_data['yearPowerP']).show(); 
           } 
        })           
    }});
});

要说清楚......这是完整的PHP文件。

<?php  
$choice = (isset($_POST['choice'])) ? date("Y-m-d",strtotime($_POST['choice'])) : date("Y-m-d"); 
$con = mysql_connect("localhost","root","xxxxxx");  
if (!$con)  {  die('Could not connect: ' . mysql_error());  }  
mysql_select_db("inverters", $con);  
$sql = "SELECT sum(power/1000) AS choice FROM feed WHERE date = '".$choice."' group by date"; $res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error()); 
$row = mysql_fetch_assoc($res);
$dayPowerP = array( $row['choice']);
?>
<?php 
$choice = (isset($_POST['choice'])) ? date("m",strtotime($_POST['choice'])) : date("m"); 
$con = mysql_connect("localhost","root","xxxxxx");  
if (!$con)  {  die('Could not connect: ' . mysql_error());  }  
mysql_select_db("inverters", $con);  
$sql = "SELECT sum(power/1000) AS choice FROM feed WHERE month(date) = '".$choice."'";
$res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error()); 
$row = mysql_fetch_assoc($res);
$monthPowerP = array($row['choice']);
?>
<?php 
$choice = (isset($_POST['choice'])) ? date("Y",strtotime($_POST['choice'])) : date("Y"); $con = mysql_connect("localhost","root","xxxxxx");  
if (!$con)  {  die('Could not connect: ' . mysql_error());  }  
mysql_select_db("inverters", $con);  
$sql = "SELECT sum(power/1000) AS choice FROM feed WHERE year(date) = '".$choice."'";
$res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error()); 
$row = mysql_fetch_assoc($res);
$yearPowerP = array( $row['choice']);
?>
<?php
$outarr['dayPowerP'] = $dayPowerP;
$outarr['monthPowerP'] = $monthPowerP;
$outarr['yearPowerP'] = $yearPowerP; 
echo json_encode($outarr);
?> 

这不是复杂的代码,所以必须有一些我看不到或做的小事。

由于

艾伦

3 个答案:

答案 0 :(得分:0)

没有必要将每个单独的元素放在自己的数组中;直接嵌入它们。

答案 1 :(得分:0)

配合。 Json_encode不支持关联数组。

“json_data ['dayPowerP']”无效。 json_data.dayPowerP 应该工作,它看起来会返回一个数组,所以你需要将它转换为浮点数。

请您发布此结果:(参见控制台)

** console.log(json_data); **

具体地

    success: function(json_data) {  
console.log(json_data)

                $('#apDiv2').html(json_data['dayPowerP']).show(); 
                $('#apDiv6').html(json_data['monthPowerP']).show();     
                $('#apDiv8').html(json_data['yearPowerP']).show(); 
               } 

如果我是对的,那么你应该用json_data.dayPowerP [0]替换json_data ['dayPowerP'] 在成功函数中,一切都应该正常工作。

答案 2 :(得分:0)

使用此: $( '#apDiv2')的HTML(json_data.dayPowerP [0])表示()。;