来自c#函数的JQuery ajax返回列表

时间:2014-11-03 21:51:20

标签: javascript c# jquery ajax webforms

在尝试实现C#和jquery一起工作时,我有点困惑。我在同一个解决方案/项目中有一个.cs文件和一个javascript文档。我的c#函数返回一个字符串列表,我想使用Javascript将其追加到某些HTML数据中。我也在为我的HTML使用webform。是否可以在javascript端返回我的列表?

的javascript

$(function () {
    $.ajax({
        type: "GET",
        url: "Test/GetListData", 
        dataType: "data: Array<any>" //Something like this?
    });

    //Can i return the list and use it here?
});

c#方法

public List<string> GetListData()
{
    List<string> mylist = new List<string>();
    mylist.Add("test1");
    mylist.Add("test2");
    mylist.Add("test3");
    return mylist;
}

3 个答案:

答案 0 :(得分:2)

this thread:

拉出来

您可以将该列表序列化为一些漂亮整洁的JSON,如下所示:

using System.Web.Script.Serialization;
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(aList);

答案 1 :(得分:1)

经过仔细研究后,我意识到我的问题是错误的。我希望在同一个项目中让C#与javascript / html通信以获取Web表单。使用列表是一个坏主意,因为我的javascript无法有效地看到它,除非我将其格式化为一个大的JSON字符串。这是解决了我的问题的更新代码,希望它有助于某人下线。 [ComVisible(true)]允许名为test的外部窗口查看我的c#函数,$ .parseJSON(myarray)能够将我的JSON字符串解析为可用的数组。

C#

[ComVisible(true)]
public string GetData()
{
    string test = "[{"Name": "test1"}, {"Name": test2"}, {"Name": "test3"}]";
    return test;
}

的javascript

<script type="text/javascript">
            var test = window.external;
            var myarray = test.GetData();
            var obj = $.parseJSON(myarray);
            alert(obj[1].Name);
        }

   </script>

答案 2 :(得分:0)

尝试这样的事情(注意:我已经设置了一个文件,因此名称不同):

   <script type="text/javascript">

        $(function ()
        {
            $.ajax({
                url: "WebService.asmx/GetListData",
                success: OnSuccess,
                error: OnError
            });

        });

        function OnSuccess(data)
        {
            for (var i = 1; i < data.all.length; i++)
            {
                alert(data.all[i].textContent);
            }
        }
        function OnError(data)
        {
            alert(data.statusText);
        }
    </script>