Jquery 为什么web服务将数据返回为msg.d

Jquery 为什么web服务将数据返回为msg.d,jquery,asp.net,json,web-services,javascriptserializer,Jquery,Asp.net,Json,Web Services,Javascriptserializer,我发现我的webmethod返回的数据为 { "d": [ {"id":"1","itemtxt":"Masters"}, {"id":"2","itemtxt":"Transactions"}, {"id":"3","itemtxt":"Misch. Reports"} ] } 如果您注意到,数组的名称为d。为什么呢?有什么规定吗 为供参考,我将返回一个对象列表 这是什么意思?我从webmethod发送的任何数据都是一样的吗?或者它将根据我的数据类型/类类型而改变 编辑

我发现我的webmethod返回的数据为

{ "d":
 [
   {"id":"1","itemtxt":"Masters"},
   {"id":"2","itemtxt":"Transactions"},
   {"id":"3","itemtxt":"Misch. Reports"}
 ]
}
如果您注意到,数组的名称为d。为什么呢?有什么规定吗

为供参考,我将返回一个对象列表

这是什么意思?我从webmethod发送的任何数据都是一样的吗?或者它将根据我的数据类型/类类型而改变

编辑

下面是webmethod

[WebMethod]
public  List<webitem> GetSubModules(string key)
{
    string s = " order by smid";
    if (key != null)
        s = " where moduleid=" + key + s;
    return Utility.GetDDLVal("Select smid id,smname itemtxt from m_submodules "+s, null, null);
}

作为ASP.NET的一部分,它有点安全性。只要不更改序列化程序,它就会一直存在。大卫·沃德(David Ward)的博客现在已经不存在了,它说的是:

所有ASMX服务JSON都是通过ASP.NET 3.5中的ASP.NET AJAX扩展序列化的。即使只返回标量返回值,例如字符串、int或布尔值,结果也将始终包含在“d”中

以及原因:

{d:1}

不是有效的JavaScript语句,其中如下所示:

[1]

因此,d参数的包装可以防止字符串作为脚本直接执行。无需担心对象或数组构造函数


我看不到任何回报。。。代码更新了webmethod,返回代码为{d:1}在JS中完全有效-因此,例如{d:console.logDo Evil}在nodejs中完全执行,这是您的参考博客解释它试图防止的安全问题。因此,包装不提供任何安全afaik。在链接的博文中有更多的细节。回复很晚,但安全性是关于json的,而不是JavaScript。上面的例子不起作用。JSON.parse{\d\:console.log\Do Evil\}。对于数组示例,它可以成功解析并导致执行。
[WebMethod]
public  List<webitem> GetSubModules(string key)
{
    string s = " order by smid";
    if (key != null)
        s = " where moduleid=" + key + s;
    return Utility.GetDDLVal("Select smid id,smname itemtxt from m_submodules "+s, null, null);
}