Ajax中的数据对象

时间:2014-02-14 02:23:10

标签: jquery ajax

我在函数中有这个代码:

 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
};

没有 SetTime 属性,接收方法接受该对象。

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();

....

}

1 个答案:

答案 0 :(得分:1)

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

data: { setTime: selectedTime },

这是有效的,因为你的函数参数名为setTime,并且你创建了一个名为selectedTime的对象:

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