如何使用ajax从jquery中的php访问变量(这里我使用的是Json)

如何使用ajax从jquery中的php访问变量(这里我使用的是Json),php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我是jquery、ajax的新手。。。。php文件中的值是通过json_encode返回的。 我的问题是我不知道如何访问这些数据 这里是代码。。。。。。 js代码 <script> $(document).ready(function(){ setInterval(ajaxcall, 1000); }); var devid=1; function ajaxcall(){ devid++; //alert(devid); $.ajax(

我是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>

$(文档).ready(函数(){
设置间隔(ajaxcall,1000);
});
var-devid=1;
函数ajaxcall(){
devid++;
//警报(devid);
$.ajax(
{
url:'gettime.php',
数据:{devid:devid},
成功:功能(数据)
{
//data=data.split(',');
data1=data.a;
data2=data.b;
var latlng=新的google.maps.latlng(数据1,数据2);
//警报(data.lat);
变量选项={
缩放:14,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById('map_canvas'),选项);
}
});
}
php文件(gettime.php)


在您的
ajax
调用
数据类型中,
缺失

$.ajax(
{
 url: 'gettime.php',
 data:{devid:devid},
 dataType: "json",
 ....................
})

在您的
ajax
调用
数据类型中,缺少了“

$.ajax(
{
 url: 'gettime.php',
 data:{devid:devid},
 dataType: "json",
 ....................
})

默认情况下,ajax调用中缺少dataType属性。php脚本以文本/xml格式返回数据。为了更改默认行为,必须指定正确的格式,即json,以便ajax调用

ajax

$.ajax( {

})

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));

默认情况下,ajax调用中缺少dataType属性。php脚本以文本/xml格式返回数据。为了更改默认行为,必须指定正确的格式,即json,以便ajax调用

ajax

$.ajax( {

})

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));

据我所知,你的代码应该可以正常工作。除了在
gettime.php
中可能有问题之外。我在那里没有看到
mysql\u 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\u-connect
code,您肯定会找到它)

另外-学习如何使用开发人员工具/firebug。它将在调试JS方面帮助您很多

编辑


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

据我所知,您的代码应该可以正常工作。除了在
gettime.php
中可能有问题之外。我在那里没有看到
mysql\u 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\u-connect
code,您肯定会找到它)

另外-学习如何使用开发人员工具/firebug。它将在调试JS方面帮助您很多

编辑


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

问题最终解决,代码将

<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 //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) . "]);";*/
?>

$(文档).ready(函数()
{
设置间隔(ajaxcall,1000);
});
var-devid=1;
函数ajaxcall()
{
devid++;
var veh=
//警报(devid);
$.ajax({
url:'gettime.php?devid='+devid+'&veh='+veh,
成功:功能(数据)
{
var datasep=data.split(',');
/*if(datasep2!=null&&datasec2!=null)
{*/
var datasep1=datasep[0]。拆分(“:”);
var datasep2=datasep1[1]。替换(“,”);
datasep2=datasep2.replace(“,”);
var datasec1=datasep[1]。拆分(“:”);
var datasec2=datasec1[1]。替换(''''}','';
datasec2=datasec2.replace(“,”);
//警报(数据SEP2);
var json=[
{“lat”:datasep2,
“液化天然气”:数据集2}]
var latlng=新的google.maps.latlng(datasep2,datasec2);
变量myOptions={
缩放:18,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
变量多段线坐标=[
新的google.maps.LatLng(datasep2,datasec2)];
var polyline=新的google.maps.polyline({
路径:多段线坐标,
strokeColor:“#FF0000”,
笔划不透明度:1.0,
冲程重量:2,
可编辑:真
});
多段线.setMap(map);
for(var i=0,length=json.length;i