$('#calendar').fullCalendar
(
{
editable: true,
events:
$.ajax
(
{
type: "POST",
url: "Calender.aspx/GetCDCatalog",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json"
}
)
}
)
calender.aspx是页面,getcddialog是函数,返回类型是不绑定日历的数组。
public CD[] GetCDCatalog()
{
XDocument docXML =
XDocument.Load(Server.MapPath("mydata.xml"));
var CDs =
from cd in docXML.Descendants("Table")
select new CD
{
title = cd.Element("title").Value,
star = cd.Element("star").Value,
endTime = cd.Element("endTime").Value,
};
return CDs.ToArray<CD>();
}
答案 0 :(得分:2)
据我所知,你不能以这种方式调用ASP.NET Webforms页面上的函数。原谅我,我假设这是一个Webforms应用程序。如果这是一个ASP.NET MVC应用程序,其中Calender.aspx [sic]页面是CalenderController的视图,您可以执行以下操作:
public JsonResult GetCDCatalog()
{
// your logic
return Json(CDs.ToList<CD>());
}
更多信息:http://geekswithblogs.net/michelotti/archive/2008/06/28/mvc-json---jsonresult-and-jquery.aspx
此外,是否可以将GetCDCatalog()方法转换为Web服务方法?看起来这就是你可能会去的地方。
编辑:好的,所以我做了一个概念验证,希望你能够适应你的项目/解决方案。我在Default.aspx页面上使用以下方法创建了一个ASP.NET Webforms(Visual Studio 2010 / Webforms 4)应用程序:
[WebMethod]
public static string[] GetSomeThings(int numberOfThings)
{
List<string> strings = new List<string>();
for (int i = 0; i < numberOfThings; ++i)
strings.Add(i.ToString());
return strings.ToArray<string>();
}
在我的应用程序的Default.aspx页面上,我添加了以下jQuery:
(注意:您可能希望从不同的页面调用Calender.aspx页面,但只要它不是跨域的,它应该没问题。否则,您需要使用JSONP并添加回调=?到您要发布的URL的末尾。
function GetSomeThingsUsingJSON() {
$.ajax({
url: 'default.aspx/GetSomeThings',
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: '{ "numberOfThings": 2 }',
success: OnSuccess,
error: OnError
});
}
function OnSuccess(data, textStatus, XMLHttpRequest) {
$("span#json").text("The length of the array returned is " + data.d.length);
}
function OnError(XMLHttpRequest, textStatus, errorThrown) {
$("span#json").text("An error occurred - " + textStatus);
}
然后,我在页面加载(document.ready)上调用了GetSomeThingsUsingJSON()。它返回以下JSON:
{"d":["0","1"]}
我认为“d”是.NET惯例/烦恼。无论如何,要在OnSuccess方法中访问所需的数据,您需要引用您正在查找的数组的d属性,以便获取返回的数组的长度。
答案 1 :(得分:1)
你需要做两件事:
答案 2 :(得分:0)
您需要以JSON格式提供结果,jQuery,插件和用于绑定数据的格式。
您可以使用JSON.NET库并将您的对象包装在JSON中并返回到客户端。
答案 3 :(得分:0)
为了使用jQuery调用页面方法,该方法必须是静态的并具有“System.Web.Services.WebMethod”属性:
[System.Web.Services.WebMethod]
public static CD[] GetCDCatalog()