在尝试实现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;
}
答案 0 :(得分:2)
您可以将该列表序列化为一些漂亮整洁的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>