I need some help with my web service and json call.. stuck trying to get the data returned, I've done this successful with strings and objects.. but not an array...
My Web Service Contains:
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetSearchCriteria()
{
    var js = new JavaScriptSerializer();
    var obj = HttpContext.Current.Session["mysessionname"];
    if (obj == null)
    {
        var result = new Criteria[] 
        { 
            new Criteria() { Key = Guid.NewGuid(), Operator = "=", ColumnName = "CheckID", Value = "" }
        };
        var serial = js.Serialize(result);
        return serial;
    }
    else
    {
        var serial = js.Serialize((Criteria[])obj);
        return serial;
    }
}
Criteria is:
[Serializable]
public class Criteria
{
    public Guid Key { get; set; }
    public string ColumnName { get; set; }
    public string Operator { get; set; }
    public string Value { get; set; }
}
My Page Contains:
<script type="text/javascript">
    function RefreshCriteria() {
        $.ajax({
            type: 'POST',
            url: '<%= System.Web.VirtualPathUtility.ToAbsolute("~/Services/WebService.asmx/GetSearchCriteria") %>',
            dataType: 'json',
            beforeSend: function (xhr) {
                xhr.setRequestHeader("Content-type",
                           "application/json; charset=utf-8");
            },
            success: function (data) {
                $(data).each(function (i) {
                    var obj = data[i];
                    alert(obj);
                });
            }
        });
    }
    $(document).ready(function () {
        RefreshCriteria();
    });
</script>
What I'm getting is undefined every time.. tried doing
$(data).each(function (i) {
  var obj = data[i];
  alert(obj);
});
$(data).each(function (i, obj) {
  alert(obj);
});
$(data).each(function (i) {
  alert(this);
});
None worked so far..