Json Encode Issue - PullRequest
       4

Json Encode Issue

0 голосов
/ 15 декабря 2010

У меня есть PHP-файл, использующий json_encode для одного вызова, но он не идет в javascript ... Я пытался больше недели ... Может быть, это прямо перед моим лицом, и я не не вижу, поэтому я опубликую это здесь, чтобы иметь второй взгляд, чтобы увидеть, что я не вижу ... Кто-нибудь видит проблему, как я на самом деле не ...

Вот код json_encode, получающий массив 3 для 1 вызова javascript ...

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

Вот вывод файла php ... Идентификаторы и значения из sql прямо здесь ....

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

Вот аджакс, показывающий пост, а Json ...

$(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);
?> 

Это не сложный код, поэтому должно быть что-то незначительное, чего я не вижу или не делаю.

Спасибо

Alan

Ответы [ 3 ]

0 голосов
/ 15 декабря 2010

Mate.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'] на json_data.dayPowerP [0] в функции успеха и все должно работать правильно.

0 голосов
/ 15 декабря 2010

Используйте это: $ ('# apDiv2'). Html (json_data.dayPowerP [0]). Show ();

0 голосов
/ 15 декабря 2010

Нет необходимости помещать каждый отдельный элемент в отдельный массив; просто вставьте их напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...