2015-05-13 3 views
1

Я пытаюсь запросить mysql db и поместить результаты в диаграмму. Он имеет два файла index.php и getpiechartdata.php. Оба этого файла находятся на моем удаленном сервере в папке /public_html/.Ajax responseText URL не работает

Я не уверен, действительно ли index.php вызывает мой сценарий getpiechartdata.php. Хотя данные, возвращенные (при прямом вызове data.php) из getpiechartdata.php, выглядят так.

{ "cols": 
    [ {"id":"","label":"Libraries","pattern":"","type":"string"}, 
    {"id":"","label":"Count","pattern":"","type":"number"} ], 
    "rows": [ {"c":[{"v":"/usr/lib64/crti.o","f":null}, 
        {"v":77005,"f":null}]}, 
      {"c":[{"v":"/usr/lib64/crtn.o","f":null}, 
        {"v":77005,"f":null}]}, 
      {"c":[{"v":"/lib64/ld-2.11.3.so","f":null}, 
        {"v":53922,"f":null}]}, 
      {"c":[{"v":"/lib64/libc-2.11.3.so","f":null}, 
        {"v":53922,"f":null}]}] 
} 

Я не уверен, как проверить, работает ли URL-адрес: ajax-вызов моего php-скрипта. Буду рад, если кто-то может дать мне некоторый указатель на это.

<html> 
<head> 
<!--Load the AJAX API--> 
    <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
    <script type="text/javascript" src="jquery-1.9.1.min.js"></script> 
    <script type="text/javascript"> 

// Load the Visualization API and the piechart,table package 
    google.load('visualization', '1', {'packages':['corechart','table']}); 

    function drawItems(syshost) { 

      // document.write(syshost); 

      var jsonPieChartData = $.ajax({url: "getpiechartdata.php",data: "q="+syshost,dataType:"json", async: false}).responseText; 

      // Create our data table out of JSON data loaded from server. 
      var piechartdata = new google.visualization.DataTable(jsonPieChartData); 

      // Instantiate and draw our pie chart, passing in some options. 
      var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
      chart.draw(piechartdata, { 
      width: 700, 
      height: 500, 
      chartArea: { left:"5%",top:"5%",width:"90%",height:"90%" } 
      }); 
    } 
    </script> 
</head> 

<body> 
<h1> Welcome to UTKA! </h1> 

    <form> 
    <fieldset> 
    <legend>Most Used Libraries Till Date</legend> 
    <p>Select Syshost 
    <!-- <select name="users" onchange="drawItems(this.value)"> --> 
    <select name="users" onchange="drawItems(this.options[this.selectedIndex].value)"> 

<?php 

try { 
    include (__DIR__ ."/include/conn.php"); 
    $conn = new PDO("mysql:host=$servername;dbname=$db", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $sql = "SELECT DISTINCT(build_syshost) AS syshost 
      FROM utka_link 
      ORDER BY syshost ASC"; 

    $query = $conn->prepare($sql); 
    $query->execute(); 

    foreach($query->fetchAll(PDO::FETCH_ASSOC) as $row){ 
     echo '<option value='. $row['syshost'] . '>'. $row['syshost'] . '</option>'; 
    } 
} 
catch(PDOException $e) { 
    echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
?> 
</select></fieldset></form> 
</body> 
</html> 

getpiechartdata.php

<?php 
// $q=$_GET["q"]; 
    $q='darter';; 
try { 
     include (__DIR__ ."/include/conn.php"); 
     $conn = new PDO("mysql:host=$servername;dbname=$db", $username, $password); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $sql = "SELECT object_path AS Libraries, module_name AS ModuleName, count(date) AS Count 
       FROM utka_link, join_link_object, utka_object 
       WHERE build_syshost='$q' AND 
       utka_link.link_id = join_link_object.link_id AND 
       join_link_object.obj_id = utka_object.obj_id 
       GROUP BY object_path 
       ORDER BY Count DESC 
       LIMIT 10"; 

     $query = $conn->prepare($sql); 
     $query->execute(); 

     $result = $query->fetchAll(PDO:: FETCH_ASSOC); 

     echo "{ \"cols\": [ {\"id\":\"\",\"label\":\"Libraries\",\"pattern\":\"\",\"type\":\"string\"}, {\"id\":\"\",\"label\":\"Count\",\"pattern\":\"\",\"type\":\"number\"} ], \"rows\": [ "; 

     $total_rows = $query->rowCount(); 
     $row_num = 0; 

     foreach($result as $row){ 
       $row_num++; 
       if ($row_num == $total_rows){ 
         echo "{\"c\":[{\"v\":\"" . $row['Libraries'] . "\",\"f\":null},{\"v\":" . $row['Count'] . ",\"f\":null}]}"; 
       } else { 
         echo "{\"c\":[{\"v\":\"" . $row['Libraries'] . "\",\"f\":null},{\"v\":" . $row['Count'] . ",\"f\":null}]}, "; 
       } 
     } 
     echo " ] }"; 
} 
catch(PDOException $e) { 
     echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
?> 
+0

Вы отправляете заголовки Content-type: application/json перед выходом JSON в 'getpiechartdata.php'? – worldofjr

ответ

0

простой способ увидеть, что под капотом происходит, с помощью веб-инспектора (Dev инструменты) в вашем браузере.

  1. В Google Chrome, откройте Дев инструменты (Ctrl +сдвига + I/Cmd + Opt + I) и нажмите на вкладку Network.
  2. Вызвать свой запрос Ajax (с открытой панелью инструментов dev)
  3. Нажмите на запрос, который был добавлен в список, и осмотрите его. Обратите особое внимание на вкладки Headers и Response.
+0

Кажется, была ошибка jquery. Я попытался загрузить последнюю jquery и сохранил ее в той же папке, какой она еще не может ее найти. Но опять же я изменил его на google/ajax/libs, и теперь он работает! Еще раз спасибо, что этот веб-инспектор наверняка пригодится! – kay

Смежные вопросы