Jquery Ajax中的数据对象

Jquery Ajax中的数据对象,jquery,ajax,Jquery,Ajax,我在函数中有以下代码: var setTime = selected[0]; var selectedTime = { ProfessionalUserId: $("#SelectProId").text() , Date: selectedDate , SetTime: setTime , Time: null }; $.ajax({ type: 'POST', data: selectedTime, url: '@Url

我在函数中有以下代码:

 var setTime = selected[0];
 var selectedTime = {
     ProfessionalUserId: $("#SelectProId").text()
     , Date: selectedDate
     , SetTime: setTime
     , Time: null
 };

$.ajax({
    type: 'POST',
    data: selectedTime,
    url: '@Url.Action("SetAvailableAppointments", "ScheduleView")',
    dataType: "json",
    //contentType: 'application/json',
    success: function (result) {
            if (data === true) {
               $("#successfulAppt").show();
             }
    },
    error: function (err) {

   }
})

选择的[0]设置一个表示时间的字符串值,即“11:00:00”或“10:15:00,等等…”

selectedTime对象与接收方法签名中的服务器端POCO对象匹配

问题是,如果我使用SetTime属性创建像这样的selectedTime对象:

var setTime = selected[0];
var selectedTime = {
    ProfessionalUserId: $("#SelectProId").text()
    , Date: selectedDate
    , SetTime: setTime
    , Time: null
};
接收方法接收空对象

如果我以这种方式创建相同的对象selectedTime

var setTime = selected[0];
var selectedTime = {
     ProfessionalUserId: $("#SelectProId").text()
     , Date: selectedDate
     //, SetTime: setTime
     , Time: null
};
data: { setTime: selectedTime },
如果没有设置时间属性,接收方法将接受对象

SetTime被设置为字符串值。我已经用chrome开发工具通过代码证明了这一步

这是服务器端对象

public class AvailableTime
    {
        public DateTime Date
        {
            get;
            set;

        }
        public TimeSpan Time { get; set; }
        public string TimeLiteral
        {
            get
            {
                return Time.ToString();
            }
        }

        public string SetTime { get; set; }
        public int ProfessionalUserId { get; set; }
    }
以下是接收方法:

public ActionResult SetAvailableAppointments(AvailableTime setTime)
        {
            if (setTime == null)
                return View();

....

}

看起来您需要更改ajax调用以按以下方式设置参数:

var setTime = selected[0];
var selectedTime = {
     ProfessionalUserId: $("#SelectProId").text()
     , Date: selectedDate
     //, SetTime: setTime
     , Time: null
};
data: { setTime: selectedTime },
这是因为函数参数名为
setTime
,并且您创建了一个名为
selectedTime
的对象,如下所示:

var selectedTime = {
    ProfessionalUserId: $("#SelectProId").text()
    , Date: selectedDate
    , SetTime: setTime
    , Time: null
};

selectedDate在哪里初始化?在代码中进一步。我正在从控件中的另一个值设置它,它工作正常。可能不相关,但在您的
success
函数中,您将输入参数命名为
result
,然后将其称为
data
。检查标题您的开发工具-它们都通过了吗正确连接到您的服务器吗?谢谢是的,我从其他代码复制了if语句,没有更改它,谢谢捕获。我需要将对象上的所有属性传递回我。是否
selectedTime
包含所有属性的对象?实际上-如果您正在将其转换为对象,您可能已更正谢谢!!!!我在接收方法签名中将setTime重命名为newAppt,它工作得很好。我甚至不认为这些名称会引起问题。