我试图使用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";
}
发布于 2014-12-12 17:46:23
后端代码应该更像这样(在我的示例中是WebService.cs,即CodeBehind for WebService.asmx ):
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%的测试和工作。如果还有什么我能帮你的话请告诉我。
https://stackoverflow.com/questions/27446435
复制相似问题