JQuery Ajax 填补了 JavaScript 变量问题

JQuery Ajax fills javascript variable issue

本文关键字:JavaScript 变量 问题 Ajax JQuery      更新时间:2023-09-26

我正在尝试使用 JQuery Ajax 以这种格式填充变量,但由于所有括号,我无法从后端返回该格式的数据

elements = [{ 
    key: 1, 
    label: "Food", 
    open: false, 
    children: [
        { key: 211, label: "Burger" }
    ]
}];

这是我当前使用

的代码,它不起作用

菜单.aspx:

$.ajax({
    type: "POST",
    url: "menu.aspx/get_menu",
    data: {},
    contentType: "application/json",
    dataType: "json",
    success: function (msg) {
        $("#test").html(msg.d);
    }
});

后端:

[WebMethod(EnableSession = false)]
public static string get_menu()
{
    return "hello world";
}

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

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 收到它时,它看起来像这样:

{"d":[
    {
        "__type":"WebService+JsonResult",
        "key":"1",
        "label":"Food",
        "open":"false",
        "children":[
            {
                "key":"211",
                "label":"Burger"
            }
        ]
    }
]}

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

$.ajax({
    type: "POST",
    url: "/WebService.asmx/test",
    contentType: "application/json",
    success: function (response) {
        var jsonResponse = response.d;
    }
});

现在,您可以将每个元素作为本机 JavaScript 对象进行访问,就像我在将每个对象分配给变量时的 success 回调中显示的那样。 现在,您可以对数据执行任何操作。

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%测试并正常工作。 如果还有什么我可以帮你的,请告诉我。