Ajax post方法返回.net mvc中未定义的
我的代码中有一个返回未定义的ajax post方法。我想这是因为我没有传递任何数据,任何帮助都将不胜感激 我已经尝试使用@url.Action助手传递url字符串,并在ajax方法的success参数中作为参数传递数据 //jqueryajaxpost方法Ajax post方法返回.net mvc中未定义的,ajax,asp.net-mvc,post,Ajax,Asp.net Mvc,Post,我的代码中有一个返回未定义的ajax post方法。我想这是因为我没有传递任何数据,任何帮助都将不胜感激 我已经尝试使用@url.Action助手传递url字符串,并在ajax方法的success参数中作为参数传递数据 //jqueryajaxpost方法 function SaveEvent(data) { $.ajax({ type: "POST", url: '@Url.Acti
function SaveEvent(data) {
$.ajax({
type: "POST",
url: '@Url.Action("Bookings/SaveBooking")',
data: data,
success: function (data) {
if (data.status) {
//Refresh the calender
FetchEventAndRenderCalendar();
$('#myModalSave').modal('hide');
}
},
error: function (error) {
alert('Failed' + error.val );
}
})
}
//控制器动作
[HttpPost]
public JsonResult SaveBooking(Booking b)
{
var status = false;
using (ApplicationDbContext db = new ApplicationDbContext())
{
if (b.ID > 0)
{
//update the event
var v = db.Bookings.Where(a => a.ID == a.ID);
if (v != null)
{
v.SingleOrDefault().Subject = b.Subject;
v.SingleOrDefault().StartDate = b.StartDate;
v.SingleOrDefault().EndDate = b.EndDate;
v.SingleOrDefault().Description = b.Description;
v.SingleOrDefault().IsFullDay = b.IsFullDay;
v.SingleOrDefault().ThemeColor = b.ThemeColor;
}
else
{
db.Bookings.Add(b);
}
db.SaveChanges();
status = true;
}
}
return new JsonResult { Data = new { status } };
}
尝试将
contentType:'Application/json',
添加到ajax中,只需:
返回Json(状态)代码>
在控制器中,而不是在JsonResult中。除此之外,您还需要在ajax代码中以字符串化Json的形式传递数据,例如:
data:JSON.stringify(数据),
另外,是否有什么特别的原因使它成为JsonResult
方法 尝试将contentType:'Application/json',
添加到ajax中,只需:
返回Json(状态)代码>
在控制器中,而不是在JsonResult中。除此之外,您还需要在ajax代码中以字符串化Json的形式传递数据,例如:
data:JSON.stringify(数据),
另外,是否有什么特别的原因使它成为JsonResult
方法 在ajax调用之前,您应该收集对象中的数据,如
var requestData= {
ModelField1: 'pass the value here',
ModelField2: 'pass the value here')
};
请注意,我只添加了两个字段,但根据您的类声明,您可以包含所有字段
应该是这样的:
function SaveEvent(data) {
$.ajax({
type: "POST",
url: '@Url.Action(Bookings,SaveBooking)',
data: JSON.stringify(requestData),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (data.status) {
//Refresh the calender
FetchEventAndRenderCalendar();
$('#myModalSave').modal('hide');
}
},
error: function (error) {
alert('Failed' + error.val );
}
})
}
在ajax调用之前,您应该收集对象中的数据,如
var requestData= {
ModelField1: 'pass the value here',
ModelField2: 'pass the value here')
};
请注意,我只添加了两个字段,但根据您的类声明,您可以包含所有字段
应该是这样的:
function SaveEvent(data) {
$.ajax({
type: "POST",
url: '@Url.Action(Bookings,SaveBooking)',
data: JSON.stringify(requestData),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (data.status) {
//Refresh the calender
FetchEventAndRenderCalendar();
$('#myModalSave').modal('hide');
}
},
error: function (error) {
alert('Failed' + error.val );
}
})
}
我已经发布了ajax调用的代码以及请求数据,您可以使用上面的代码来执行操作。我按照您的建议进行了更改,但仍然存在相同的问题。我收到一个404错误,请确保ajax调用中的控制器和操作方法名称正确。我已确保控制器和操作方法名称正确,我从表单中调用数据的方式可能有问题吗?你能在一个示例中向我展示正确的语法吗?请发布ajax调用的代码以及请求数据,你可以使用上面的代码来执行操作。我按照你的建议进行了更改,但我仍然有相同的问题。我收到一个404错误。请确保在ajax调用中有正确的控制器和操作方法名称。我已确保控制器和操作方法名称正确,从表单调用数据的方式是否有问题?