JQuery从c#函数返回ajax列表

JQuery ajax return list from c# function

本文关键字:ajax 列表 返回 函数 JQuery      更新时间:2023-09-26

当我试图实现C#和jquery协同工作时,我有点困惑。我在同一个解决方案/项目中有一个.cs文件和一个javascript文档。我的c#函数返回一个字符串列表,我想使用Javascript将其附加到一些HTML数据中。我也在为我的HTML使用网络表单。是否可以在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;
}

从此线程中拉出:

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

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

经过仔细研究,我意识到我处理问题的方式不对。我想让C#在同一个项目中与javascript/html进行web表单通信。使用列表是个坏主意,因为除非我将其格式化为一个大的JSON字符串,否则我的javascript无法有效地看到它。这是解决我问题的更新代码,希望它能帮助其他人。[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>

试试这样的东西(注意:我已经设置了一个文件,所以名称不同):

   <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>