1

想要从 Mysql 中检索记录数据并将其存储到 Javascript 数组中,以获取 heatmap.js 地图数据,格式如下:

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();,我应该怎么做才能解决这个问题?

(更新的正确代码)

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 基于此处

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

3 回答 3

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 来处理

于 2013-05-21T15:15:20.687 回答
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;
});
于 2013-05-21T15:20:55.043 回答
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 输出正确。但也许您现在只是使用固定(错误)字符串进行测试?

于 2013-05-29T09:27:31.753 回答