首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery Ajax填充javascript变量问题

JQuery Ajax填充javascript变量问题
EN

Stack Overflow用户
提问于 2014-12-12 15:05:02
回答 1查看 132关注 0票数 1

我试图使用JQuery Ajax以这种格式填充一个变量,但是由于所有的括号,我无法从后端返回格式的数据。

代码语言:javascript
运行
复制
elements = [{ 
    key: 1, 
    label: "Food", 
    open: false, 
    children: [
        { key: 211, label: "Burger" }
    ]
}];

下面是我目前使用的代码,这些代码不起作用

menu.aspx:

代码语言:javascript
运行
复制
$.ajax({
    type: "POST",
    url: "menu.aspx/get_menu",
    data: {},
    contentType: "application/json",
    dataType: "json",
    success: function (msg) {
        $("#test").html(msg.d);
    }
});

后端:

代码语言:javascript
运行
复制
[WebMethod(EnableSession = false)]
public static string get_menu()
{
    return "hello world";
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-12 17:46:23

后端代码应该更像这样(在我的示例中是WebService.cs,即CodeBehind for WebService.asmx ):

代码语言:javascript
运行
复制
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{
    public class JsonResult
    {
        public string key, label, open;
        public List<Children> children;
    }
    public class Children
    {
        public string key, label;
    }

    [WebMethod]
    public List<JsonResult> test()
    {
        List<Children> child = new List<Children>();
        child.Add(new Children
        {
            key = "211",
            label = "Burger"
        });

        List<JsonResult> result = new List<JsonResult>();
        result.Add(new JsonResult
        {
            key = "1",
            label = "Food",
            open = "false",
            children = child
        });
        return result;
    }
}

此代码以JSON的形式发送创建的列表--当jQuery接收到该列表时,该列表如下所示:

代码语言:javascript
运行
复制
{"d":[
    {
        "__type":"WebService+JsonResult",
        "key":"1",
        "label":"Food",
        "open":"false",
        "children":[
            {
                "key":"211",
                "label":"Burger"
            }
        ]
    }
]}

然后,jQuery AJAX非常简单,如下所示:

代码语言:javascript
运行
复制
$.ajax({
    type: "POST",
    url: "/WebService.asmx/test",
    contentType: "application/json",
    success: function (response) {
        var jsonResponse = response.d;
    }
});

现在,您可以将每个元素作为本机JavaScript对象访问,就像我在将每个对象赋值给变量时在success回调中显示的那样。现在,您可以对数据做任何您想做的事情。

代码语言:javascript
运行
复制
success: function (response) {
    var jsonResponse = response.d;
    for (var i = 0; i < jsonResponse.length; i++) {
        var key = jsonResponse[i].key;
        var label = jsonResponse[i].label;
        var open = jsonResponse[i].open;
        var children = jsonResponse[i].children;
        for (var a = 0; a < children.length; a++) {
            var key = children[a].key;
            var label = children[a].label;
        }
    }
}

这是100%的测试和工作。如果还有什么我能帮你的话请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27446435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档