JQuery从c#函数返回ajax列表
本文关键字:ajax 列表 返回 函数 JQuery | 更新日期: 2023-09-27 18:29:09
当我试图实现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>