JQuery Ajax填充javascript变量问题

我试图使用JQuery Ajax填充此格式的变量,但由于所有括号,我无法从后端返回格式的数据

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

这是我目前使用的代码无效

menu.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; } public class Children { public string key, label; } [WebMethod] public List test() { List child = new List(); child.Add(new Children { key = "211", label = "Burger" }); List result = new List(); 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%测试和工作。 如果还有什么我可以帮助您,请告诉我。