2015-11-03 62 views
3

我正在使用web表单,并且在我的ajax函数调用后面的代码中有一个webmethod。看来,将WebMethod的返回数据,但我无法解析返回的JSON字符串表行在AJAX成功函数中解析返回的C#列表

这里是落后的方法我的代码(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"}]} 

为什么我刚开g未定义所有正在添加的行?

回答

3

您会注意到返回的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>"); 
     } 
    }, 
+0

非常感谢! – user3788671

+0

如何循环工作无增量请解释我 你的ans是worng –

+0

@darshandave:这是[JavaScript的'for ... in'循环](https://developer.mozilla.org/en-US/docs/Web /JavaScript/Reference/Statements/for...in)。 – StriplingWarrior