2010-12-11 13 views
0

Ich habe meine Lektüre gemacht, keine Fehler gefunden, aber die php, json und jquery spielen nett ... kann irgendjemand etwas sehen, das ich hier in diesem Code nicht sehe arbeiten ?PHP, JSON und JQUERY

Meine clickdates.php Datei hat 3 Werte, die json should in 1 Aufruf machen sollte ... aber es nicht ... Hier ist die php Datei (und wenn ich es teste, bekomme ich 3 Werte und die 3 IDs, die in der JQuery verbinden sollten) .. Kannst du etwas falsch sehen, dass ich nicht ??

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

Hier ist, was meine Testausgabe von der PHP-Datei ist ... in meinen Augen, sollte es funktionieren ... aber es nicht tun.

{"dayPowerP":["12.7240"],"monthPowerP":["145.0460"],"yearPowerP":["941.0370"]} 

Hier ist die sehr einfache Jquery, die die Werte werden Puting sollten, wo sie von der json gehören ... aber nicht so viel Glück ...

$(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']); 
      $('#apDiv6').html(json_data['monthPowerP']);  
      $('#apDiv8').html(json_data['yearPowerP']); 

      } 
     })   
    }}); 
}); 

Was soll ich hier nicht sehen ??

Alan

+0

Warum gibt es eckige Klammern um die Zahlen in der JSON-Ausgabe? Das sieht so aus, als wären sie single-entry-JavaScript-Arrays anstelle von Werten. Können Sie einen JavaScript-Debugger in Ihrem bevorzugten Browser laden und sich nach dem Zurückgeben von json_data an Ihre AJAX-Antwort umsehen? –

+0

Das ist die Live-Ansicht in Dreamweaver, um zu sehen, ob ich irgendwelche Ausgabe von der PHP-Datei habe – hkalan2007

Antwort

0

$ .ajax erwartet gültig json Ausgabe Hexe die PHP-Datei nicht becouse Sie sendet sind nicht die richtigen Header

ini_set('display_errors', 0); 
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); 
    header("Cache-Control: no-cache, must-revalidate"); 
    header("Pragma: no-cache"); 
    header("Content-type: application/json"); 
    echo json_encode($outarr); 

P. S. verwenden Senden Natürlich müssen Sie die Daten ändern

+0

Ich bin ein wenig verwirrt, ich sende ein Datum "Y-m-d" an die sql, aber die Rückkehr ist ein SUMME-Wert der Daten. kein Datum. – hkalan2007

+0

Ich bezog mich nicht auf die sql, sondern die Header-Ablauf, Header-Datum der letzten Änderung. Es tut mir Leid, dass ich dich verwirrt habe . –

+0

Ich habe das versucht, und lese mehr über den Header, aber mein Problem ist immer noch das gleiche ... Wenn ich nur jquery laden oder Post und separate PHP-Dateien verwenden, funktioniert es aber zu viel Zeit, und die Ajax und Json tun nichts ... ich bin verloren – hkalan2007