簡體   English   中英

AJAX Return對象包含asp.net web表單中的d

[英]AJAX Return object contains d in asp.net web form

嘿伙計這是一個簡單的問題,但想要停止ajax返回對象包含d

我是asp.net網頁表單

    $.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;

        }

當結果返回它將包含結果result.d ,但我想停止這種d件事.Simply結果應該是result 任何人都可以解決這個問題

你無能為力。 這就是ASP.NET WebMethods總是序列化響應的方式。 Microsoft決定在此.d屬性中包裝響應的原因是為了防止此特定的JSON hijacking vulnerability 當然,您可以隨時檢查您的success回調是否存在此屬性:

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();
    }
}

現在在成功回調中,您可以直接使用此集合,而無需另外JSON.parse它:

success: function (result) {
    var data = result.hasOwnProperty('d') ? result.d : result;
    for (var i = 0; i < data.length; i++) {
        console.log('id: ' + data[i].id + ', text: ' + data[i].text);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM