2012-08-10 124 views
0

我在OpenLayers上有一個熱圖應用程序,用戶輸入兩個日期和時間間隔並選擇他/她是否希望查看這兩個日期時間之間的所有數據或根據每小時/每日/每週/每月的時間間隔查看它們。但是,當我輸入兩個日期和時間作爲輸入並嘗試顯示數據時,我只能看到這兩個時間間隔之間的所有數據。每當我從我的HTML下拉菜單中選擇小時,每日,每週等,然後按提取查詢按鈕,我會在Ajax POST消息中得到一個錯誤。這可能是什麼原因?該代碼如下所示:ajax在每小時/每日/每週/每月數據調用時發生錯誤

的HTML郵政部分:

$(document).ready(function(){ 

// ajaxForm submission 
$('#ajaxForm').submit(function() { 
    $.ajax({ 
    type: 'POST', 
    url: 'heatQuery.php', 
    //url: 'http://localhost/heatQuery.php', 
    data: $(this).serialize(), 
    dataType: 'json', 
    success: function(response) 
    { 
     // update the points for heatmap layer   
     updateHeatMap(response); 

    }, 
    error: function(errorMsg) 
    { 
     alert('Error in Ajax POST'); 
     } 


    }); 

    return false; 
}); 
}); 

PHP的一部分:

setupDB.php

<?php 

$mysql_hostname = "localhost"; 
$mysql_user = "myuser"; 
$mysql_password = "mypassword"; 
$mysql_database = "mydatabase"; 
$bd = mysql_connect($mysql_hostname, $mysql_user) or die("Oops some thing went wrong"); 
    mysql_select_db($mysql_database, $bd) or die("Oops some thing went wrong"); 

?> 

heatQuery.php

<?php 
include 'setupDB.php'; 
$coords_array = array(); 

function getPoints($dateTimeBeg,$dateTimeEnd) 
{ 
$ses_sql= "SELECT lat,lon FROM `mytable` WHERE calltime >= '$dateTimeBeg' AND calltime <= '$dateTimeEnd'"; 
    $result = mysql_query($ses_sql,$bd) or die('Error: ' . mysql_error()); 
    if($result) 
    { 
     $num_of_rows = mysql_num_rows($result); 
     if($num_of_rows > 0) 
     { 
      while($row = mysql_fetch_row($result)) 
      { 
       array_push($coords,array($row[0],$row[1]));  
      } 
      array_push($coords_array,$coords); 
     } 
    } 
} 

$hours = array(1 => '00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00', '24:00'); 

$dateBeg = isset($_POST['date1']) ? $_POST['date1'] : ""; 
$dateEnd = isset($_POST['date2']) ? $_POST['date2'] : ""; 
$dateFreq = isset($_POST['freq']) ? $_POST['freq'] : ""; 

if($dateBeg && $dateEnd && $dateFreq) // if all variables are set 
{ 
    $datetime1 = new DateTime($dateBeg); 
    $datetime2 = new DateTime($dateEnd); 
    $interval = $datetime1->diff($datetime2,true); 

    if($dateFreq == "all") 
    { 
     $coords = array(); 
     $timeBeg = $_POST['time1']; 
     $timeEnd = $_POST['time2']; 
     $sp = " "; 
     $dateTimeBeg = $dateBeg.$sp.$timeBeg; 
     $dateTimeEnd = $dateEnd.$sp.$timeEnd; 
     $ses_sql= "SELECT lat,lon FROM `mytable` WHERE calltime >= '$dateTimeBeg' AND calltime <= '$dateTimeEnd'"; 
    $result = mysql_query($ses_sql,$bd) or die('Error: ' . mysql_error()); 
    if($result) 
    { 
     $num_of_rows = mysql_num_rows($result); 
     if($num_of_rows > 0) 
     { 
      while($row = mysql_fetch_row($result)) 
      { 
       array_push($coords,array($row[0],$row[1]));  
      } 
      array_push($coords_array,$coords); 
     } 
    } 

    }else if($dateFreq == "hourly") 
    {  
     for($i=1;$i<=24;$i+=1) 
     { 
      $coords = array(); 
      $timeBeg = $hours[$i]; 
      $timeEnd = $hours[$i+1]; 
      $dateTimeBeg = $dateBeg.$sp.$timeBeg; 
      $dateTimeEnd = $dateBeg.$sp.$timeEnd; 
      $ses_sql= "SELECT lat,lon FROM `mytable` WHERE calltime >= '$dateTimeBeg' AND calltime <= '$dateTimeEnd'"; 
    $result = mysql_query($ses_sql,$bd) or die('Error: ' . mysql_error()); 
    if($result) 
    { 
     $num_of_rows = mysql_num_rows($result); 
     if($num_of_rows > 0) 
     { 
      while($row = mysql_fetch_row($result)) 
      { 
       array_push($coords,array($row[0],$row[1]));  
      } 
      array_push($coords_array,$coords); 
     } 
    } 

     } 
    }else if($dateFreq == "daily") 
    { 
     for($i=1;$i<=interval;$i+=1) 
     { 
      $ses_sql= "SELECT lat,lon FROM `mytable` WHERE calltime >= '$dateTimeBeg' AND calltime <= '$dateTimeEnd'"; 
    $result = mysql_query($ses_sql,$bd) or die('Error: ' . mysql_error()); 
    if($result) 
    { 
     $num_of_rows = mysql_num_rows($result); 
     if($num_of_rows > 0) 
     { 
      while($row = mysql_fetch_row($result)) 
      { 
       array_push($coords,array($row[0],$row[1]));  
      } 
      array_push($coords_array,$coords); 
     } 
    } 
     } 
    } 

    $coords_json = json_encode($coords_array); 
    echo $coords_json; 

//echo $coords; 

    mysql_close($bd); 
} 

?> 

編輯:

每bPratik的要求,我也把對HTML代碼替代後的錯誤,包括我從服務器獲取錯誤:

error: function(jqXHR, textStatus, errorThrown) 
    { 

     alert('Error in Ajax POST\ntextStatus: ' + textStatus + '\nerrorThrown: ' + errorThrown); 
    } 

儘管把這個,我只得到在AJAX留言信息錯誤。奇怪的是,mysqld.exe進程運行了一段時間 - 顯然它實際上是在檢索查詢的同時 - 然後我收到消息。

+0

請也包括你得到的錯誤。 – bPratik 2012-08-10 18:42:19

+0

,我不是指你從回調中得到的錯誤文本,而是你從服務器上得到的任何錯誤。 – bPratik 2012-08-10 18:43:10

+0

@bPratik我該怎麼做?我只得到消息 '在AJAX POST錯誤',但我有一個備用的實施與'錯誤:功能(jqXHR,textStatus,errorThrown) \t { \t \t \t警報( '在阿賈克斯POST \ ntextStatus錯誤:' + textStatus + '\ nerrorThrown:'+ errorThrown); \t \t \t // alert(jqXHR); ',你想看看那個結果嗎? – sm90901 2012-08-10 18:47:12

回答

0

前段時間解決了這個問題,很快就會發布詳情。

相關問題