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
Json stringify可以在控制台中工作,但不能在代码中工作_Json_Stringify - Fatal编程技术网

Json stringify可以在控制台中工作,但不能在代码中工作

Json stringify可以在控制台中工作,但不能在代码中工作,json,stringify,Json,Stringify,我完全不知所措。我有一些非常简单的代码,它接受一个对象并将其转换为JSON var vl = JSON.stringify(this.visibleLayers); 这总是返回undefined,也就是说,变量vl有一个未定义的值。但当我检查时 JSON.stringify(this.visibleLayers); 在控制台中,它返回我期望的字符串。this.visibleLayers是一个对象,而不是数组。会发生什么事 编辑:添加更多代码 下面是正在调用的方法。这是使用Do

我完全不知所措。我有一些非常简单的代码,它接受一个对象并将其转换为JSON

        var vl = JSON.stringify(this.visibleLayers);
这总是返回undefined,也就是说,变量vl有一个未定义的值。但当我检查时

JSON.stringify(this.visibleLayers);
在控制台中,它返回我期望的字符串。this.visibleLayers是一个对象,而不是数组。会发生什么事

编辑:添加更多代码 下面是正在调用的方法。这是使用Dojo AMD风格。基本上,我循环浏览我的地图图层及其子图层,以指示每个图层当前在地图中是否可见。所以我得到了一个看起来像

{“街道”:正确,“公路”:正确,…}

submitExportCustomMap: function() {
        domStyle.set("pdfRequestFinished", "display", "none");
        domStyle.set("pdfRequestError", "display", "none");
        domStyle.set("pdfRequest", "display", "block");
        registry.byId("printButton").set("disabled", true);
        this.visiblelayers = {};
        var _this = this;

        array.forEach(map.layerIds, function(layer, i1) {
            var ml = map.getLayer(layer);
            _this.visiblelayers[ml.id] = ml.visible;
            var s = array.forEach(ml.layerInfos, function(sublayer, i2){
                if (array.indexOf(ml.visibleLayers, sublayer.id.toString()) !== -1 && ml.visible) {
                    _this.visiblelayers[sublayer.name] = true;
                }
                else {
                    _this.visiblelayers[sublayer.name] = false;
                }
            });
        });

        this.prepareCommonParameters();
        var vl = JSON.stringify(this.visibleLayers);

        var params = {
            "xMin": this.extent.xmin,
            "yMin": this.extent.ymin,
            "xMax": this.extent.xmax,
            "yMax": this.extent.ymax,
            "Spatial_Reference": this.spatRef,
            "Map_Scale": this.mapScale,
            "Visiblelayers": vl,
            "Layout": this.layout,
            "Map_Title": dom.byId("mapTitle").value,
            "PointGraphics": graph.getFeatureSet("point"),
            "LineGraphics": graph.getFeatureSet("polyline"),
            "PolyGraphics": graph.getFeatureSet("polygon")
        };
        this.cmgp.submitJob(params, lang.hitch(this, this.pdfCompleteCallbackCM), lang.hitch(this, this.pdfStatusCallback), lang.hitch(this, this.pdfErrorCallback));
    },

男孩,我觉得自己很愚蠢!结果是我打错了visibleLayers。声明我调用的变量是visiblelayers,小写为l。进行stringify调用时,我使用visibleLayers,大写字母L。使它们一致解决了所有问题。哦

在控制台中使用
返回一些值<代码>此=
窗口
在这种情况下?否,此=我的对象,如预期的那样,具有visibleLayers属性(和其他属性)。您是否尝试将其称为
窗口.JSON.stringify
?在该范围内是否有任何其他
JSON
变量?结果相同。控制台正确地显示了字符串,代码仍然显示未定义的变量。您能显示一些代码吗?也许有些东西你看不到,如果你看不到的话我真的不知道到底发生了什么