簡體   English   中英

如何使用ajax從jquery中的php訪問變量(這里我使用的是Json)

[英]how to access variable from php in jquery using ajax(here i am using Json)

我是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));
?>

在您的ajax調用中, dataType: "json",丟失了

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

據我所知,您的代碼應該可以正常工作。 除了您可能在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代碼,則可以找到它)

另外-了解如何使用開發者工具/螢火蟲。 它將對調試JS有很大幫助。

編輯

請記住,您的腳本必須僅返回json代碼。 如果響應中會有一些垃圾(如html代碼),則瀏覽器將無法解析響應,並且您將在成功函數的data中得到錯誤或簡單字符串(而不是對象)。

默認情況下,您缺少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));

終於問題解決了,代碼會...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM