c# - 在 AJAX 成功函数中解析返回的 C# 列表

标签 c# jquery ajax webforms

我正在使用 Web 表单,我的 ajax 函数调用的代码背后有一个 Web 方法。看起来 web 方法正在返回数据,但我无法将返回的 json 字符串解析为表行

这是我的代码隐藏方法(Web 方法):

public class Part
{
    public string Number { get; set; }
    public string Price { get; set; }
    public string NetAvailable { get; set; }
    public string Location { get; set; }
    public string Distance { get; set; }
    public string Phone { get; set; }
}

[WebMethod]
public static List<Part> GetParts(string partnumber)
{
    List<Part> parts = new List<Part>();

    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["NXT"].ToString()))
    {
        con.Open();
        using (SqlCommand command = new SqlCommand("SELECT prod, qtyonhand, whse, listprice FROM icsw where prod LIKE @partnumber", con))
        {
            command.Parameters.AddWithValue("@partnumber", "%" + partnumber + "%");

            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    Part part = new Part
                    {
                        Number = reader[0].ToString(),
                        Price = reader[3].ToString(),
                        NetAvailable = reader[1].ToString(),
                        Distance = "0.0",
                        Location = reader[2].ToString(),
                        Phone = GetBranchPhoneNumber(reader[2].ToString())
                    };
                    parts.Add(part);

                }
            }
        }
    }

    return parts;
}

这是我的 AJAX 调用:

$("#searchbtn").click(function() {
    $.ajax({
        url: 'partslocator.aspx/GetParts',
        type: 'POST',
        data: JSON.stringify({ 'partnumber': $("#searchtbx").val()}),
        dataType: 'json',
        contentType: 'application/json',
        success: function (data) {

            for (var i in data) {
                alert(JSON.stringify(data[i]));
                $('#searchresultstble').append("<tr><td>" + data[i].Number + "</td><td>" + data[i].Price + "</td><td>" + data[i].NetAvailable + "</td><td>" + data[i].Location + "</td><td>" + data[i].Distance + "</td><td>" + data[i].Phone + "</td></tr>");
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        }
    });
});

这是返回的数据:

{"d":[{"__type":"partslocator+Part","Number":"0-2809 1025","Price":"2.50000","NetAvailable":"0.00","Location":"82pk","Distance":"0.0","Phone":"test"},{"__type":"partslocator+Part","Number":"0-2809 1025","Price":"2.58000","NetAvailable":"0.00","Location":"Phx","Distance":"0.0","Phone":"test"}]}

为什么添加的所有行都未定义?

最佳答案

您会注意到返回的 data 实际上不是一个数组,而是一个包含该数组的值 (d) 的对象。试试这个:

    success: function (returnedData) {
        var data = returnedData.d;
        for (var i in data) {
            alert(JSON.stringify(data[i]));
            $('#searchresultstble').append("<tr><td>" + data[i].Number + "</td><td>" + data[i].Price + "</td><td>" + data[i].NetAvailable + "</td><td>" + data[i].Location + "</td><td>" + data[i].Distance + "</td><td>" + data[i].Phone + "</td></tr>");
        }
    },

关于c# - 在 AJAX 成功函数中解析返回的 C# 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33508689/

相关文章:

javascript - 为什么我的数组结果不符合我的 CSS 规则?

jquery - MarionetteJS "sliding"转换

javascript - - 我正在尝试编写输入应为 abbbcc 且输出应为 a1b3c2 的代码

javascript - 使用 Ajax jQuery 的动态选择选项不起作用

c# - 使用 HBM 文件将字典映射到 NHibernate 中的子表

C# - 访问说明符 - 用于访问同一命名空间中的方法

c# - 编写在线支付处理系统

c# - 代码覆盖率中未测量 AssemblyInitialize

javascript - Ajax调用无法正常工作

ajax - 我正在寻找响应式 Web 图表工具