如何将一个Object数组传递给jQuery Ajax理解的格式?

时间:2012-07-14 17:44:01

标签: c# jquery asp.net ajax

我有一个具有以下功能的asmx Web服务:

    [WebMethod]
    public List<Tag> GetTags()
    {
        List<Tag> TagList = new List<Tag>();

        DataTable dt = Helpers.Tags.GetTags();

        foreach (DataRow dr in dt.Rows)
        {
            Tag t = new Tag();
            t.TagName = dr["Tag"].ToString();
            t.TagDescription = dr["Description"].ToString();
            TagList.Add(t);
        }

        return TagList;
    }

这是标记类:

    public class Tag
    {
        public string TagName { get; set; }
        public string TagDescription { get; set; }
    }

GetTags()方法返回一个对象List of Tag Objects。

我在jQuery中有一个AutoComplete函数,它接受以下格式的数组:

    var availableTagsCustom = [
        {
            tagName: 'Ruby',
            tagDescription: 'Ruby is an open-source dynamic...'
        },
        {
            tagName: 'Scala',
            tagDescription: 'Scala is a general purpose programming language...'
        },
        {
            tagName: 'Scheme',
            tagDescription: 'Scheme is a functional programming language....'
        }
    ];

如何将我收到的“标记对象列表对象”转换或转换为此格式?

谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您需要在服务类级别设置[System.Web.Script.Services.ScriptService]属性才能获得Json结果。

其次,您需要在方法上应用[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public List<Tag> GetTags()
{
    List<Tag> TagList = new List<Tag>();

    DataTable dt = Helpers.Tags.GetTags();

    foreach (DataRow dr in dt.Rows)
    {
        Tag t = new Tag();
        t.TagName = dr["Tag"].ToString();
        t.TagDescription = dr["Description"].ToString();
        TagList.Add(t);
    }

    return TagList;
}

请求中的第三组Content-type: application/json

  

本文也可能有所帮助"using jquery to consume aspnet json web-services