Javascript 调用一个ASP.net(不是MVC)webmethod并获得一个json响应,这样我就可以用foreach(d3.js)遍历一个列表了?

Javascript 调用一个ASP.net(不是MVC)webmethod并获得一个json响应,这样我就可以用foreach(d3.js)遍历一个列表了?,javascript,jquery,asp.net,json,d3.js,Javascript,Jquery,Asp.net,Json,D3.js,尝试调用webmethod并使用返回的json,以便可以从示例中的.csv文件进行交换: 我可以使用jQuery返回json,但是callback data.foreach中的代码不起作用,因此它的格式不是d3需要的格式。如何使用json库,使用D3而不是jQuery,从asp.net页面到asmx Web服务,这样下面的data.foreach就可以工作了?当我尝试序列化一个对象列表并以Json的形式返回时,使用D3返回空值。注意-返回一项是可以的,我可以创建并调用webmethod来返回gu

尝试调用webmethod并使用返回的json,以便可以从示例中的.csv文件进行交换:

我可以使用jQuery返回json,但是callback data.foreach中的代码不起作用,因此它的格式不是d3需要的格式。如何使用json库,使用D3而不是jQuery,从asp.net页面到asmx Web服务,这样下面的data.foreach就可以工作了?当我尝试序列化一个对象列表并以Json的形式返回时,使用D3返回空值。注意-返回一项是可以的,我可以创建并调用webmethod来返回guid。但是为了让D3示例正常工作,我需要将json恢复为示例所期望的格式…谢谢。顺便说一句,我可以用MVC做到这一点,我需要它的ASP.net虽然

d3.csv("flights-departed.csv", function(data) {

// Parse dates and numbers.
data.forEach(function(d) {
d.date = parse(d.date);
d.value = +d.value;
});

// Compute the maximum price.
x.domain([new Date(1999, 0, 1), new Date(2003, 0, 0)]);
y.domain([0, d3.max(data, function(d) { return d.value; })]);

// Bind the data to our path elements.
svg.select("path.area").data([data]);
svg.select("path.line").data([data]);

draw();
});
更新

我一整天都在努力解决这个问题

我更新了d3库以允许调用webmethods,如下文所示:

现在我可以调用并获取JSON编码的对象,没有问题。当Itry和执行相同操作并返回对象列表时,它总是以null形式从webmathod返回

解释

这项工作:

function loadAnOBJECTViaJSonVIA_ASP_FRAMEWORK() {

    var sUrl = "http://localhost:3791/DemoServices.asmx/GetSingleObject_VIA_ASP_FRAMEWORK";

    alert('d3.json - ' + sUrl);

    d3.jsonasmx(sUrl, function (data) {

        var d = data.d;

        alert('I got the following OBJECT back:' + d);
        alert('reading property: ' + d.ppGuid);
        alert('reading property: ' + d.x_value);
        alert('reading property: ' + d.y_value);
    });
}
电话:

[WebMethod]
        public PointPair GetSingleObject_VIA_ASP_FRAMEWORK()
        {
            PointPair pp = new PointPair();

            return pp;
        }
[WebMethod]
        public PointPairList GetObjectArray_VIA_ASP_FRAMEWORK()
        {
            string testResultsID = "26881";
            List<PointPair> pointpairs = this.GetTestResultPointsPaired(testResultsID);

            PointPairList ppl = new PointPairList();

            ppl.ListOfPoints = pointpairs;

            return ppl;
        }
这不起作用:

function loadOBJECT_Array_ViaJSonVIA_ASP_FRAMEWORK() {

            var sUrl = "http://localhost:3791/DemoServices.asmx/GetObjectArray_VIA_ASP_FRAMEWORK";

            alert('d3.json - ' + sUrl);

            d3.jsonasmx(sUrl, function (data) {

                var d = data.d;

                //alert('I got the following TOP LEVEL OBJECT back:' + d);

                //alert('reading property: ' + d.ppGuid);
                //alert('reading property: ' + d.x_value);
                //alert('reading property: ' + d.y_value);
            });
        }
电话:

[WebMethod]
        public PointPair GetSingleObject_VIA_ASP_FRAMEWORK()
        {
            PointPair pp = new PointPair();

            return pp;
        }
[WebMethod]
        public PointPairList GetObjectArray_VIA_ASP_FRAMEWORK()
        {
            string testResultsID = "26881";
            List<PointPair> pointpairs = this.GetTestResultPointsPaired(testResultsID);

            PointPairList ppl = new PointPairList();

            ppl.ListOfPoints = pointpairs;

            return ppl;
        }

真的卡住了…在第二个例子里面回调函数的数据是空的。正如您所看到的,我已经尝试将点的数量包装到.ListOfPoints属性中,但没有任何帮助。

如果您获得的数据是JSON格式的,请使用而不是d3.csv来解析数据


如果JSON被格式化为对象数组,那么代码的其余部分应该可以工作。如果它被格式化为一个带有命名项的大对象,您还需要查看如何转换为数组。

我不是100%确定,但请尝试确保在web方法中将ResponseFormat设置为ResponseFormat.Json。JSON是一个标准,所以在jQuery中工作的应该在任何其他库中工作。JSON很可能是无效的

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
    public PointPairList GetObjectArray_VIA_ASP_FRAMEWORK()
    {
        string testResultsID = "26881";
        List<PointPair> pointpairs = this.GetTestResultPointsPaired(testResultsID);

        PointPairList ppl = new PointPairList();

        ppl.ListOfPoints = pointpairs;

        return ppl;
    }

那真的没用,谢谢你。我一整天都在想办法解决这个问题。我是其中的一部分…你能发布从你的ASP/WebMethod收到的数据的样子吗?这将使您更容易确定需要更改哪些内容才能使其对d3友好。谢谢您的尝试。没有骰子。这太奇怪了…我不敢相信以前没有人发布过这方面的消息