gpt4 book ai didi

javascript - 使用ajax将json/javascript数据/对象传递给c#函数

转载 作者:行者123 更新时间:2023-11-28 01:23:39 24 4
gpt4 key购买 nike

我正在使用 FullCalendar ( http://arshaw.com/fullcalendar/ ),并且需要使用 json 将数据传递到 ASP.net 页面代码隐藏页面中的 C# 函数方面的帮助。

我正在使用 json 在我的 FullCalendar Web 应用程序中加载数据:

隐藏代码:

    [WebMethod]
public static List<Event> GetEvents()
{
List<Event> events = new List<Event>();
events.Add(new Event()
{
EventID = 1,
EventName = "EventName 1",
StartDate = DateTime.Now.ToString("MM-dd-yyyy"),
EndDate = DateTime.Now.AddDays(2).ToString("MM-dd-yyyy"),
EventColor = "red"
});
events.Add(new Event()
{
EventID = 2,
EventName = "EventName 2",
StartDate = DateTime.Now.AddDays(4).ToString("MM-dd-yyyy"),
EndDate = DateTime.Now.AddDays(5).ToString("MM-dd-yyyy"),
EventColor = "green"
});

return events;
}

asp.x 页面:

     events: function(start, end, callback)
{
$.ajax(
{
type: 'POST',
contentType: 'application/json',
data: "{}",
dataType: 'json',
url: "Calendar.aspx/GetEvents",
cache: false,
success: function (response) {

var events = $.map(response.d, function (item, i) {
var event = new Object();
event.id = item.EventID;
event.start = new Date(item.StartDate);
event.end = new Date(item.EndDate);
event.title = item.EventName;
event.color = item.EventColor;
return event;
})
callback(events);
},

error: function (err) {
alert('Error');
}
});
},

这工作正常。现在我想通过调用函数并向其传递数据来保存数据。这是我到目前为止所做的:

隐藏代码:

    [WebMethod]
public static bool SaveEvents(List<Event> events)
{
//iterate through the events and save to database

return true;
}

asp.x页面

    function save() {
var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');

var events = $.map(eventsFromCalendar, function (item, i) {
var event = new Object();
event.id = item.id;
event.start = item.start;
event.end = item.end;
event.title = item.title;
event.color = item.color;
return event;
});

$.ajax(
{
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(events), **<-- I have to pass data here but how???**
dataType: 'json',
url: "Calendar.aspx/SaveEvents",
cache: false,
success: function (response) {
alert('Events saved successfully');
},

error: function (err) {
alert('Error Saving Events');
}
});
return false;
}

上面的ajax帖子是我需要帮助的地方。变量 events 包含所有 FullCalendar 事件信息。如何将数据“事件”传递给函数“SaveEvents”?如果需要,我可以更改 SaveEvents 签名。

编辑如果我将 C# 函数更改为使用 s0 这样的数组:

    [WebMethod]
public static bool SaveEvents(Event[] newEvents)
{

return true;
}

并传递以下数据:

    data: JSON.stringify({ newEvents: events }),

然后使用大小为 4 的数组调用函数'SaveEvents',但所有数据值均为 null,这是为什么?

谢谢

最佳答案

从代码中可以明显看出,您有一个 C# 类

public class Events
{
public int EventID {get; set;}
public string EventName {get;set;}
public StartDate {get; set;}
public string end {get; set;}
public string color {get; set;}
}

所以采用 json 数组。这里有一个样本//将作为数据提供给 C# 方法的数组

var newEvents=[     
{
EventID : 1,
EventName : "EventName 1",
StartDate : "2015-01-01",
EndDate : "2015-01-03",
EventColor : "red"
},
{
EventID : 2,
EventName : "EventName 2",
StartDate : "2015-01-02",
EndDate : "2015-01-04",
EventColor : "green"
}
];

现在 ajax 请求将 JSON 对象传递到发布的 URL

    $.ajax
({
type: 'POST',
contentType: 'json',
data: {newEvents:newEvents},// Pass data as it is. Do not stringyfy
dataType: 'json',
url: "Calendar.aspx/SaveEvents"
success: function (response) {
alert('Events saved successfully');
},
error: function (err) {
alert('Error Saving Events');
}
});

更新:

为确保没有其他问题,请测试您的事件另存为。如果一切顺利,上面也应该可以工作,因为它对我有用:)

[WebMethod]
public static bool SaveEvents(string EventName)
{
//iterate through the events and save to database

return true;
}

$.ajax
({
type: 'POST',
contentType: 'json',
data: {EventName:'myevet 1'},
url: "Calendar.aspx/SaveEvents",
cache: false,
success: function (response) {
alert('Events saved successfully');
},
error: function (err) {
alert('Error Saving Events');
}
});

关于javascript - 使用ajax将json/javascript数据/对象传递给c#函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com