0

我是 jquery 的新手,ajax.... 来自 php 文件的值是通​​过 json_encode 返回的。我的问题在这里我不知道如何访问这些数据。

这里的代码...... js代码......

<script>
 $(document).ready(function(){

     setInterval(ajaxcall, 1000);
 });
 var devid=1;
 function ajaxcall(){
    devid++;
    //alert(devid);
    $.ajax(
    {
     url: 'gettime.php',
     data:{devid:devid},

     success: function(data) 
     {

         //data = data.split(',');
         data1 = data.a;
         data2 = data.b;        

         var latlng = new google.maps.LatLng(data1, data2);
         //alert(data.lat);

         var options = {
            zoom: 14,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
         };
         var map = new google.maps.Map(document.getElementById('map_canvas'), options);

    }

    });
}

</script>

php 文件 (gettime.php)

<?php 
    $vvid = $_REQUEST['devid'];
    echo $vvid;
    $sql= mysql_query("select * from maploca where id='$vvid'");
    $sqlqry = mysql_fetch_array($sql);
    $var1 = $sqlqry['latitude'];
    $var2 = $sqlqry['latitude'];
    echo json_encode(array("a" => $var1, "b" => $var2));
?>
4

4 回答 4

2

在你的ajax电话dataType: "json",中不见了

$.ajax(
{
 url: 'gettime.php',
 data:{devid:devid},
 dataType: "json",
 ....................
})
于 2013-05-08T06:40:58.297 回答
1

据我所知,您的代码应该可以正常工作。除了你可能在gettime.php. 我在那里看不到mysql_connect代码,因此您的查询可能无法执行。

另一个可能的问题:

 $var1 = $sqlqry['latitude'];
 $var2 = $sqlqry['latitude'];
 echo json_encode(array("a" => $var1, "b" => $var2));

当我猜它应该是这样的时候,你两次取纬度:

$var1 = $sqlqry['latitude'];
$var2 = $sqlqry['longitude'];
echo json_encode(array("a" => $var1, "b" => $var2));

无论如何,请检查您的 PHP 错误日志。可能你会在那里发现一些错误(如果你真的缺少mysql_connect代码,你会发现它)

另外 - 学习如何使用开发者工具/firebug。它将极大地帮助您调试 JS。

编辑

请记住,您的脚本必须只返回 json 代码。如果响应中有一些垃圾(如 html 代码),浏览器将无法解析响应,您将在data成功函数中得到错误或简单字符串(而不是对象)。

于 2013-05-08T07:05:55.410 回答
0

默认情况下,您缺少 ajax 调用中的 dataType 属性数据由 php 脚本以 text/xml 格式返回,以便更改默认行为,您必须指定正确的 json 格式,因此您的 ajax 调用应该是

阿贾克斯

$.ajax({

url: 'gettime.php',

 data:{devid:devid},

 dataType: "json",

 type:post

})

php

$vvid = $_REQUEST['devid'];
echo $vvid;
$sql= mysql_query("select * from maploca where id='$vvid'");
$sqlqry = mysql_fetch_array($sql);
$var1 = $sqlqry['latitude'];
$var2 = $sqlqry['latitude'];
echo json_encode(array("a" => $var1, "b" => $var2));
于 2013-05-08T06:52:17.790 回答
0

最后问题解决了,代码将是....

<script>
    $(document).ready(function()
    {
        setInterval(ajaxcall, 1000);
    });
    var devid = 1;
    function ajaxcall()
    {
        devid++;
        var veh = <?php echo $veh?>
        //alert(devid);
        $.ajax({
            url: 'gettime.php?devid='+devid+'&veh='+veh,
            success: function(data) 
            {
                var datasep = data.split(',');


                /*if(datasep2!=null && datasec2!=null)
                {*/
                var datasep1 = datasep[0].split(':');
                var datasep2 = datasep1[1].replace('"','');
                datasep2 = datasep2.replace('"','');

                var datasec1 = datasep[1].split(':');
                var datasec2 = datasec1[1].replace('"}','');
                datasec2 = datasec2.replace('"','');
                //alert(datasep2);
                var json = [
                { "lat":datasep2,
                "lng":datasec2 }]
                var latlng = new google.maps.LatLng(datasep2,datasec2);
                var myOptions = {
                    zoom: 18,
                    center: latlng,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
                var polylineCoordinates = [
                new google.maps.LatLng(datasep2,datasec2)];
                var polyline = new google.maps.Polyline({
                    path: polylineCoordinates,
                    strokeColor: '#FF0000',
                    strokeOpacity: 1.0,
                    strokeWeight: 2,
                    editable: true
                });
                polyline.setMap(map);
                for (var i = 0, length = json.length; i < length; i++) 
                {
                    var data = json[i],
                    latLng = new google.maps.LatLng(data.lat, data.lng); 

                    // Creating a marker and putting it on the map
                var marker = new google.maps.Marker({
                position: latLng,
                map: map
                });
                }   
                /*}
                else
                {
                    datasem1 = datasep[0].split(':');
                    datasem2 = datasem1[1].replace('"','');
                    datasem2 = datasem2.replace('"','');
                    alert(datasem2);
                }   */
            }
        });
    }
    </script>

php代码将是....

<?php //ob_start();
include "../../config/connection.php"; 
  //  header("Content-Type: application/javascript");
    //header('Content-Type: application/json');

    $vvid = $_REQUEST['devid'];
    $veh = $_REQUEST['veh'];
    if($vvid!='')
    {
    $sql= mysql_query("select * from maploca where id='$vvid' and veh_id='$veh'") or die(mysql_error());
    $sqlqry = mysql_fetch_array($sql) or die(mysql_error());
    $var1 = $sqlqry['latitude'];
    $var2 = $sqlqry['longitude'];
    echo json_encode(array('a' => $var1, 'b' => $var2));
    }
    else
    {
        echo "Empty Value";
    }

    //echo $_GET['callback'] . "([" . implode(",", $ll) . "]);";*/
?>
于 2013-05-10T10:25:52.730 回答