Javascript 从AJAX向Wcf服务发送KeyValuePair

Javascript 从AJAX向Wcf服务发送KeyValuePair,javascript,ajax,html,wcf,keyvaluepair,Javascript,Ajax,Html,Wcf,Keyvaluepair,我使用AJAX&WCF,我想发送一个KeyValuePair数组: 正在服务的数组(位于特定类中): CustomTime.cs: [DataContract] public class CustomTime { [DataMember] public int Hour { get; set; } [DataMember] public int Minute { get; set; } } 我通过以下函数在JavaScript中创建数组: function Cr

我使用
AJAX&WCF
,我想发送一个
KeyValuePair
数组:

正在服务的数组(位于特定类中):

CustomTime.cs:

[DataContract]
public class CustomTime
{
    [DataMember]
    public int Hour { get; set; }
    [DataMember]
    public int Minute { get; set; }
}
我通过以下函数在
JavaScript
中创建数组:

function CreateWorkDaysDictonary() {

    var workdaysdic = new Object();

    if ($('#checkbox-sunday').is(':checked')) {
        var starttime = { Hour: $('#select-from-hour-sunday').val(),
            Minute: $('#select-from-minute-sunday').val()
        };
        var endtime = { Hour: $('#select-until-hour-sunday').val(),
            Minute: $('#select-until-minute-sunday').val()
        };
        workdaysdic["Sunday"] = { Start: starttime, End: endtime };
    }

    if ($('#checkbox-monday').is(':checked')) {
        var starttime = { Hour: $('#select-from-hour-monday').val(),
            Minute: $('#select-from-minute-monday').val()
        };
        var endtime = { Hour: $('#select-until-hour-monday').val(),
            Minute: $('#select-until-minute-monday').val()
        };
        workdaysdic["Monday"] = { Start: starttime, End: endtime };
    }

    //and so on...

    return workdaysdic;
}
JS
中创建的数组:

但是对于
WCF
,数组到达时没有数据:

我不明白为什么会发生这种情况,如果有人能帮助我,我会很高兴的

我将对象作为
JSON
发送到WCF:

当我尝试创建如下对象时:

function CreateWorkDaysDictonary() {

    var workdaysdic = new Array();

    if ($('#checkbox-sunday').is(':checked')) {
    var starttime = { Hour: $('#select-from-hour-sunday').val(),
        Minute: $('#select-from-minute-sunday').val()
    };
    var endtime = { Hour: $('#select-until-hour-sunday').val(),
        Minute: $('#select-until-minute-sunday').val()
    };
    workdaysdic[workdaysdic.length] = { "Sunday": { Start: starttime, End: endtime}};
}

if ($('#checkbox-monday').is(':checked')) {
    var starttime = { Hour: $('#select-from-hour-monday').val(),
        Minute: $('#select-from-minute-monday').val()
    };
    var endtime = { Hour: $('#select-until-hour-monday').val(),
        Minute: $('#select-until-minute-monday').val()
    };
    workdaysdic[workdaysdic.length] = { "Monday": { Start: starttime, End: endtime} };
}

        //and so on...

        return workdaysdic;
    }

我收到错误:
服务器响应状态为400(错误请求)

最后,我通过以下方式解决了问题:

我创建了一个对象列表(WCF),而不是数组:

我发送的列表如下(JS):

而且它是有效的!:)


这里我要提到的是,它可以与字典一起使用,我没有使用它,因为我必须对xml文件进行序列化。

您的ASP.Net引用中有JSON.Net吗?
function CreateWorkDaysDictonary() {

    var workdaysdic = new Object();

    if ($('#checkbox-sunday').is(':checked')) {
        var starttime = { Hour: $('#select-from-hour-sunday').val(),
            Minute: $('#select-from-minute-sunday').val()
        };
        var endtime = { Hour: $('#select-until-hour-sunday').val(),
            Minute: $('#select-until-minute-sunday').val()
        };
        workdaysdic["Sunday"] = { Start: starttime, End: endtime };
    }

    if ($('#checkbox-monday').is(':checked')) {
        var starttime = { Hour: $('#select-from-hour-monday').val(),
            Minute: $('#select-from-minute-monday').val()
        };
        var endtime = { Hour: $('#select-until-hour-monday').val(),
            Minute: $('#select-until-minute-monday').val()
        };
        workdaysdic["Monday"] = { Start: starttime, End: endtime };
    }

    //and so on...

    return workdaysdic;
}
function CreateWorkDaysDictonary() {

    var workdaysdic = new Array();

    if ($('#checkbox-sunday').is(':checked')) {
    var starttime = { Hour: $('#select-from-hour-sunday').val(),
        Minute: $('#select-from-minute-sunday').val()
    };
    var endtime = { Hour: $('#select-until-hour-sunday').val(),
        Minute: $('#select-until-minute-sunday').val()
    };
    workdaysdic[workdaysdic.length] = { "Sunday": { Start: starttime, End: endtime}};
}

if ($('#checkbox-monday').is(':checked')) {
    var starttime = { Hour: $('#select-from-hour-monday').val(),
        Minute: $('#select-from-minute-monday').val()
    };
    var endtime = { Hour: $('#select-until-hour-monday').val(),
        Minute: $('#select-until-minute-monday').val()
    };
    workdaysdic[workdaysdic.length] = { "Monday": { Start: starttime, End: endtime} };
}

        //and so on...

        return workdaysdic;
    }
[DataMember]
public List<DataItem> WorkDays { get; set; }
[DataContract]
public class DataItem
{
    [DataMember]
    public string Key;

    [DataMember]
    public CustomDay Value;
}
function CreateWorkDaysDictonary() {

    var workdaysdic = new Array();

    if ($('#checkbox-sunday').is(':checked')) {
        var starttime = { Hour: $('#select-from-hour-sunday').val(),
            Minute: $('#select-from-minute-sunday').val()
        };
        var endtime = { Hour: $('#select-until-hour-sunday').val(),
            Minute: $('#select-until-minute-sunday').val()
        };
        workdaysdic.push({ Key: "Sunday", Value: { Start: starttime, End: endtime} });
    }

    if ($('#checkbox-monday').is(':checked')) {
        var starttime = { Hour: $('#select-from-hour-monday').val(),
            Minute: $('#select-from-minute-monday').val()
        };
        var endtime = { Hour: $('#select-until-hour-monday').val(),
            Minute: $('#select-until-minute-monday').val()
        };
        workdaysdic.push({ Key: "Monday", Value: { Start: starttime, End: endtime} });
    }

    //and so on...

    return workdaysdic;
}