2013-05-21 53 views
1

想从MySQL检索记录数据,并将其存储到Javascript数组用于heatmap.js地图数据格式为:获得MySQL数据,并将其存储到Javascript数组

var testData = {max: 46, data: [{lat: 33.5363, lon:-117.044, value: 1},{lat: 33.5608, lon:-117.24, value: 1},..]}; 

现在我陷在这里,我不知道如何从Jquery连接到我的var testData = new Array();,我该怎么做才能解决这个问题?

(修订版CORRECT CODE)

get_query.php

<?php 
require_once('./db_con.php'); 
$dbcon=new db; 


$query="SELECT (SELECT geo_lat FROM fun WHERE created_at <= DATE_SUB(NOW(), interval 1 minute) AS geo_lat," . 
     "(SELECT geo_long FROM fun WHERE created_at <= DATE_SUB(NOW(), interval 1 minute) AS geo_long"; 

$result = mysqli_query($dbcon,$query); 
$data = array(); 

    while($row= mysqli_fetch_assoc($result)){ 

    $data[] = array("lat"=>$row["geo_lat"], "lon"=>$row["geo_long"], "value"=>1); 
    $post_data = json_encode(array('max' => 46, 'data' => $data)); 
    } 
    echo $post_data; 
?> 

my_data.js从here基于:

jQuery.extend({ 
getValues: function(url) { 
    var result = null; 
    $.ajax({ 
     url: url, 
     type: 'get', 
     dataType: 'json', 
     async: false, 
     success: function(data) { 
      result = JSON.stringify(data); 
     } 
    }); 
    return result; 
} 
}); 

var testData = $.getValues("get_query.php"); 

由于Orangepill和Chrislondon。

+4

whoot' while(true){'? –

+1

为什么你有'while(true){'? –

+0

一旦数组按照你想要的方式构建,'json_encode'应该只调用一次。 –

回答

2

所以你的问题是如何将你的jQuery连接到你的var data,这样我就不会陷入PHP中的无数问题码。在你成功的功能,你可以设置var data像这样:

var data = new Array(); 

$(function() { 
    $.ajax({ 
     type:  "post", 
     url:  "get_query.php", 
     data:  $(this).serialize(), 
     dataType: "json" 
}).done(function(response) { 
    data = response; 
}); 
+0

谢谢,我将在修复php代码后对其进行测试。 – y45

+0

嗨,克里斯,如何测试这段代码,我用heatmap.js实现,但它仍然不起作用。 – y45

+0

我之前没有使用过heatmap.js,但是看着他们的代码尝试这样做:heatmap.store.setDataSet(response);完成函数的内部。 – chrislondon

3
while($row= mysqli_fetch_assoc($dbcon,$result)){ 
    $data[] = array("lat"=>$row["geo_lat"], "lon"=>$row["geo_long"], "value"=>1); 
} 
echo json_encode($data); 

应该找到你正在寻找的东西。当构建json_encode的数据只是使用原生php类型而不是json时,请让json_encode处理该问题

+1

谢谢,当我执行PHP脚本时,页面导致这个'[]',这是正确的吗?对于我缺乏知识感到抱歉。 – y45

+0

当我添加'echo $ data'时在代码结束时,我得到'PHP警告:mysqli_query()期望参数1'和'PHP警告:mysqli_fetch_assoc()期望恰好1个参数'。 – y45

+0

嗨,现在的工作。感谢您的帮助 – y45

0

您的JSON似乎不正确:

var testData = {max: 46, data: [{lat: 33.5363, lon:-117.044, value: 1},{lat: 33.5608, lon:-117.24, value: 1},..]}; 

应与周围的按键报价

var testData = {"max": 46, "data": [{"lat": 33.5363, "lon":-117.044, "value": 1},{"lat": 33.5608, "lon":-117.24, "value": 1},..]}; 

既然你在使用json_encode() PHP我会假设PHP输出正确。但是,也许你现在只是为了测试目的而使用固定(错误)的字符串?

相关问题