Jquery 值不是从razor ajax到action方法的
action方法中的Id始终为null。迷失在我做错了什么的地方。按预期调用操作方法 jQuery函数:Jquery 值不是从razor ajax到action方法的,jquery,ajax,asp.net-mvc,razor,Jquery,Ajax,Asp.net Mvc,Razor,action方法中的Id始终为null。迷失在我做错了什么的地方。按预期调用操作方法 jQuery函数: function success(result) { var Id = $('#UserId').val(); var data = JSON.stringify({ 'Id': Id }); alert(data); $.ajax({ type: "GET", url: "@Url.Action("ListAppointmen
function success(result) {
var Id = $('#UserId').val();
var data = JSON.stringify({ 'Id': Id });
alert(data);
$.ajax({
type: "GET",
url: "@Url.Action("ListAppointments", "Appointment")",
data: data,
success: function (result2) {
$("#partialViewAppointments").html(result2);
$('#example').DataTable();
}
});
}
行动方法:
public PartialViewResult ListAppointments(string Id)
{
var userId = Convert.ToInt32(Id);
var o = (from s in db.tblAppointments.ToList()
where s.UserId == userId
select new AppointmentViewModel { AppointmentInstructorName = s.InstructorName, AppointmentLessonAddress = s.Address, LessonDateTime = s.LessonDate, UserId = s.UserId, Id = s.ID });
return PartialView(o);
}
通过这样做,我使它工作。不确定为什么stringify函数会阻止它工作:
function success(result) {
var Id = $('#UserId').val();
var data = ({ Id: Id });
alert(data);
$.ajax({
type: "GET",
url: "@Url.Action("ListAppointments", "Appointment")",
data: data,
success: function (result2) {
$("#partialViewAppointments").html(result2);
$('#example').DataTable();
}
});
}
您缺少的
内容类型:'application/json'
,但是假设您已经离开了默认路由,您可以使用查询参数传递它
function success(result) {
var Id = $('#UserId').val();
alert(data);
$.ajax({
type: "GET",
url: "@Url.Action("ListAppointments", "Appointment")" + "?id=" + Id,
data: data,
success: function (result2) {
$("#partialViewAppointments").html(result2);
$('#example').DataTable();
}
});
}
您不需要对数据执行
JSON stringify
。可以按原样发送js对象
var d ={ Id: $('#UserId').val()};
$.ajax({
type: "GET",
url: "@Url.Action("ListAppointments", "Home")",
data: d
success: function (result2) {
$("#partialViewAppointments").html(result2);
$('#example').DataTable();
}
});
现在,由于这是一个GET请求,数据(js对象)将作为查询字符串值发送到服务器(例如:ListAppointments?Id=23
)
因此,当您对该js对象执行JSON.stringify
调用时,它将返回一个字符串,如“{”Id:23}”
。因此,用于ajax调用(带有querystring)的最终url将是ListAppointments?{“Id”:23}
。您可以看到这是无效的。它应该是ListAppointments?Id=23
如果仍要使用JSON.stringify
(发送复杂数据),请指定contentType
并使用POST
方法
另外,我看到您正在将字符串param值转换为action方法中的int,为什么不使用int
作为参数类型,因为您正在发送数字数据
public PartialViewResult ListAppointments(int Id)
{
}
为什么它不能与stringify一起工作,因为我发现了这一点?我正在更新答案,将该信息包含在1 mntthankyou中。这是有道理的。我已把它标记为答案。