【问题标题】:JQuery ajax return list from c# function来自c#函数的JQuery ajax返回列表
【发布时间】:2014-12-30 16:17:12
【问题描述】:

在尝试实现 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;
}

【问题讨论】:

标签: javascript c# jquery ajax webforms


【解决方案1】:

来自this thread:

您可以像这样将该列表序列化为一些漂亮整洁的 JSON:

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

【讨论】:

  • 那么是否有必要将我的列表序列化为 JSON 以便在 JQuery 中使用数据?
  • 这是最简单的方法。 JSON 对象很轻,很容易被 jQuery 解析。
  • 感谢您的提示。请参阅下面的更新答案,了解我是如何解决我的问题的。
【解决方案2】:

经过仔细研究后,我意识到我以错误的方式解决问题。我想让 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>

【讨论】:

  • 您的意思是:{"Name": "test2"}, 而不是{"Name": test2"}
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多