Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
Javascript OpenLayers Get请求的responseText JSON的Get元素_Javascript_Json_Gis_Openlayers_Responsetext - Fatal编程技术网

Javascript OpenLayers Get请求的responseText JSON的Get元素

Javascript OpenLayers Get请求的responseText JSON的Get元素,javascript,json,gis,openlayers,responsetext,Javascript,Json,Gis,Openlayers,Responsetext,我正在尝试使用OpenLayers.Request.GET以JSON格式从url加载数据 以下是请求(注意:url工作正常,它以JSON格式提供数据): 对于处理程序,我尝试获取request.responseText,并在json文件中显示一个特定键,如下所示: var obj; function handler(request) { obj = request.responseText; alert (obj.features[0].indicator); } 这是我的J

我正在尝试使用
OpenLayers.Request.GET
以JSON格式从url加载数据

以下是请求(注意:url工作正常,它以JSON格式提供数据):

对于处理程序,我尝试获取
request.responseText
,并在json文件中显示一个特定键,如下所示:

var obj;

function handler(request) {
    obj = request.responseText;
    alert (obj.features[0].indicator);
}
这是我的JSON:

 {"type":"FeatureCollection","features":[{"type":"Feature","id":"titid","geometry":{"type":"MultiPolygon","coordinates":[[[[3694.7863290442,3749.0463695516],[9328.2052648721,3756.61081112875],[3694.18117371807,3861.9059202327],[9340.68659347435,3834.4171230714],[9334.7863290442,3749.0463695516],[3634.7863290442,3839.0463695516]]]]},"geometry_name":"the_geom","properties":{"name1":"asme","number":9130,"indicator":"20","gid":939}}],"crs":{"type":"EPSG","properties":{"code":"2684"}}}
但是我得到了这个错误:(注意TestPrint.html:506是警告行)

Uncaught TypeError:无法读取未定义TestPrint的属性“0”。html:506
GeoExt.form.FormPanel.listeners.actioncomplete TestPrint.html:506
h、 Event.fire ext all.js:21
h、 Observable.fireEvent ext all.js:21
(匿名函数)ext all.js:21
h、 Event.fire ext all.js:21
h、 Observable.fireEvent ext all.js:21
Ext.form.BasicForm.Ext.extend.afterAction Ext all.js:21
GeoExt.form.SearchAction.Ext.extend.HandlerResponse SearchAction.js:147
OpenLayers.Protocol.WFS.v1.OpenLayers.Class.handleRead OpenLayers.js:843
(匿名函数)OpenLayers.js:413
(匿名函数)OpenLayers.js:62
OpenLayers.Request.runCallbacks OpenLayers.js:509
d、 onreadystatechange OpenLayers.js:508
b、 dispatchEvent OpenLayers.js:751
c OpenLayers.js:744
_object.onreadystatechange OpenLayers.js:748

如果不分析响应,则需要使用的函数是:

您的错误是由于您试图访问“您的所有JSON”。未定义的功能(您是否听说过具有
features
property(它应该是一个列表)的字符串)?我真的不这么认为:p

您可以通过以下方式访问“indicator”对象(它嵌套在properties功能下):

在这种情况下,您可以使用它来理解json结构

您的json:

{

    "type":"FeatureCollection",
    "features":[
        {
            "type":"Feature",
            "id":"titid",
            "geometry":{
                "type":"MultiPolygon",
                "coordinates":[
                    []
                ]
            },
            "geometry_name":"the_geom",
            "properties":{
                "name1":"asme",
                "number":9130,
                "indicator":"20",
                "gid":939
            }
        }
    ],
    "crs":{
        "type":"EPSG",
        "properties":{
            "code":"2684"
        }
    }

}

我想出来了,现在它与
eval
函数一起工作

obj = eval('(' + request.responseText + ')');

使用
alert(obj.features[0].properties['indicator']);

我分析了它,但出现了以下错误:未捕获类型错误:无法读取未定义的属性“features”,我将其更改为alert(obj.features[0].type);正如您所说,但仍然无法识别该功能,我不知道如何获取指示符的值。我也不知道为什么指示符无效请尝试此代码段,因为您可以看到它是有效的。您应该这样做:
alert(typeof request.responseText)
,这样我们就可以了解这是否是响应问题(但我不相信,我打赌它会显示出来)“string”)我尝试了它,它会给我字符串,但当我尝试此警报(typeof obj)和obj=JSON.parse(request.responseText)时,我没有定义!!因此无法成功地将字符串解析为JSON!!!您在执行
警报(typeof obj)
之前或之后定义了
obj
?在警报之前,我这样做了,它可以工作obj.features[0].properties['indicator']我尝试了它,但仍然给出了与“无法读取属性”特性“未定义”相同的错误,因为obj的类型未定义,正如我在下面的注释中尝试这样做时所说:警报(typeof obj)with obj=JSON.parse(request.responseText);我得到了未定义!!因此将字符串解析为JSON不会成功!!!
obj.features[0].properties['indicator']
{

    "type":"FeatureCollection",
    "features":[
        {
            "type":"Feature",
            "id":"titid",
            "geometry":{
                "type":"MultiPolygon",
                "coordinates":[
                    []
                ]
            },
            "geometry_name":"the_geom",
            "properties":{
                "name1":"asme",
                "number":9130,
                "indicator":"20",
                "gid":939
            }
        }
    ],
    "crs":{
        "type":"EPSG",
        "properties":{
            "code":"2684"
        }
    }

}
obj = eval('(' + request.responseText + ')');