C# AJAX返回对象在asp.net web表单中包含d

C# AJAX返回对象在asp.net web表单中包含d,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,嘿,伙计们,这是一个简单的问题,但要停止ajax返回对象包含的d I asp.net web表单 $.ajax({ type: "POST", url: myurl, data: JSON.stringify({value:"1"}), contentType: "application/json; charset=utf-8", dataType: "json", success: func

嘿,伙计们,这是一个简单的问题,但要停止ajax返回对象包含的
d

I asp.net web表单

    $.ajax({
        type: "POST",
        url: myurl,
        data: JSON.stringify({value:"1"}),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            //alert("i am in success");
            console.log(result);

        },
        failure: function (response) {
            console.log("I am in failure");
        }
    });
及 在.cs文件中

        [WebMethod]

        public static string getSpareParts(string value)
        {
            List<data> spareParts;
            using (var db = new WaltonCrmEntities())
            {
                spareParts = db.SpareParts.Select(x => new data
                {
                    id = x.ItemID,
                    text = x.ItemName
                }).ToList();
            }
            JavaScriptSerializer js = new JavaScriptSerializer();
            return js.Serialize(spareParts);
            //return spareParts;

        }
[WebMethod]
公共静态字符串getSpareParts(字符串值)
{
列出备件清单;
使用(var db=new WaltonCrmEntities())
{
spareParts=db.spareParts.Select(x=>newdata
{
id=x.ItemID,
text=x.ItemName
}).ToList();
}
JavaScriptSerializer js=新的JavaScriptSerializer();
返回js.Serialize(spareParts);
//归还备用零件;
}

当result为return时,它将在
result.d
中包含result,但我想停止这件
d
事情。简单的结果应该是
result
。谁能解决这个问题。

对此你无能为力。这就是ASP.NET WebMethods总是序列化响应的方式。Microsoft决定将响应包装在此
.d
属性中的原因是为了防止这种特殊情况。当然,无论此属性是否存在,您都可以始终在
成功
回调中进行检查:

success: function (result) {
    var data = result.hasOwnProperty('d') ? result.d : result;
    console.log(data);
}
另外,我强烈建议不要在WebMethod中编写管道代码(如序列化内容),只需返回适当的对象,让基础结构关注序列化:

[WebMethod]
public static List<data> getSpareParts(string value)
{
    using (var db = new WaltonCrmEntities())
    {
        return db.SpareParts.Select(x => new data
        {
            id = x.ItemID,
            text = x.ItemName
        }).ToList();
    }
}

你对此无能为力。这就是ASP.NET WebMethods总是序列化响应的方式。Microsoft决定将响应包装在此
.d
属性中的原因是为了防止这种特殊情况。当然,无论此属性是否存在,您都可以始终在
成功
回调中进行检查:

success: function (result) {
    var data = result.hasOwnProperty('d') ? result.d : result;
    console.log(data);
}
另外,我强烈建议不要在WebMethod中编写管道代码(如序列化内容),只需返回适当的对象,让基础结构关注序列化:

[WebMethod]
public static List<data> getSpareParts(string value)
{
    using (var db = new WaltonCrmEntities())
    {
        return db.SpareParts.Select(x => new data
        {
            id = x.ItemID,
            text = x.ItemName
        }).ToList();
    }
}