Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php脚本向google maps vai ajax响应发送json对象_Php_Jquery_Google Maps Api 3 - Fatal编程技术网

从php脚本向google maps vai ajax响应发送json对象

从php脚本向google maps vai ajax响应发送json对象,php,jquery,google-maps-api-3,Php,Jquery,Google Maps Api 3,我被难住了。我不确定我的回调函数为什么没有解析我的JSON对象。 控制台日志中出现以下错误: TypeError:数据未定义 对于(变量i=0,len=data.features.length;i

我被难住了。我不确定我的回调函数为什么没有解析我的JSON对象。 控制台日志中出现以下错误:

TypeError:数据未定义 对于(变量i=0,len=data.features.length;i 非常感谢你的帮助

ajax代码:

$.ajax({
        type : 'POST',
        url  : 'timezone.php',
        dataType : 'json',
        data     : { "func" : "getFirstAndNext", epochTime : browserUTC },
        success  : function( data ) {
                console.log( data.first );
                console.log( data.next );
                sector_callback( data.first );

            // do something with data.myObject.memberVariable

        },
        error : function ( XMLHttpRequest, textStatus, errorThrown ) {
            // didn't work!
        }
    });
PHP脚本:

    <?php
    //header('Content-Type: application/json; charset=utf-8');
    function getFileStamp($type) {
        $timeInterval = 15; // minutes
        $now = round($_POST['epochTime'] / 1000);
        $now = round(1352324181061 /1000 ); // 3:36:21
        //$now = round(1352238011.067);
        $offsetInSeconds = $timeInterval * 60;
        $offsetInMillis  = $timeInterval * 60 * 1000;

        $currentFileTime = $now - $now % ($timeInterval * 60);
        //$currentFileTime = ($now - ($now  % $offsetInMillis))/1000.0;  // this returns epoch time in $timeInterval minutes.
        $nextFileTime = $currentFileTime + $offsetInSeconds;  // next epoch time for file;
        return ($type == 0) ? $currentFileTime : $nextFileTime;
    }

        $currentFileTime = getFileStamp(0) . '.json';
        $nextFileTime = getFileStamp(1) . '.json';

        $res = array();
        $res['file1'] = file_get_contents($currentFileTime);
        $res['file2'] = file_get_contents($nextFileTime);
        echo json_encode(array("first"=>$res['file1'],"next"=>$res['file1'])); //takes contents and converts it to json object
    ?>

扇区回调函数:

    var allPolygons = [];
    function sector_callback() {
        //console.log(data);
        var bounds = new google.maps.LatLngBounds();        
        for (var i = 0, len = data.features.length; i < len; i++) {
            var coords = data.features[i].geometry.coordinates[0];
            siteNames = data.features[i].properties.Name; // added for site names
            var path = [];
        for ( var j = 0, len2 = coords.length; j < len2; j++ ){ // pull out each     set of coords and create a map object
            var pt = new google.maps.LatLng(coords[j][1], coords[j][0])
            bounds.extend(pt);
            path.push(pt);

        }

        var polygons = new google.maps.Polygon({
        path: path,
            strokeColor: "#000000",
            strokeOpacity: 0.8,
            strokeWeight: 1,
            fillColor: "#000000",
            fillOpacity: 0.35,
        map: map
        });
        createClickablePoly(polygons, siteNames);

        google.maps.event.addListener(polygons, 'mouseover', function() {
        var currentPolygon = this;

        currentPolygon.setOptions({ 
            fillOpacity: 0.45,
            fillColor: "#FF0000"
            })
        });

        google.maps.event.addListener(polygons, 'mouseout', function() {
        var currentPolygon = this;
        currentPolygon.setOptions({ 
            fillOpacity: 0.35,
            fillColor: "#000000"
            })
        });

        allPolygons.push(polygons);
        }
    }
var allPolygons=[];
函数扇区_回调(){
//控制台日志(数据);
var bounds=new google.maps.LatLngBounds();
对于(变量i=0,len=data.features.length;i
仅限于我在这里看到的内容,我看不到您的扇区回调()如何访问数据。当jQuery传入数据时,如果一切正常,您的控制台应该可以记录这些属性。但是当您将部分数据传递给扇区回调()时,它就丢失了。原因是您的扇区回调()要么需要读取arguments[]数组以获取它,要么需要将函数签名更改为sector_callback(数据)

在jQuery块中,传递数据而不是数据。功能:

sector_callback( data );
并更改您自己的回调签名:

function sector_callback(data) {
    console.log(data); // will log the whole chunk of the server data returned

 ...

}
这是因为当数据返回到jQuery回调时,它处于一个闭包中。即使您在该闭包之外的某个地方声明了它,它也将保留本地范围,并且不能被其他函数访问,除非您显式地传递它


希望我已经理解了问题的症结所在,这很有帮助……

是data.first定义的吗?为什么不是sector\u callback(data);我正在尝试返回两个JSON对象。我可以在控制台中看到它们,当我使用console.log(data.first)和colsole.log(data.next)时,这是有意义的。谢谢。