0

我正在尝试为这个 AJAX 请求获取正确的语法。我知道我需要为我的列表使用 'traditional: true' 参数,但它破坏了正在传递的其他参数:

$.ajax({
    type: 'GET',
    dataType: 'json',
    url: '../Workflow/GetTasks',
    contentType: "application/json",
    data: {
        queueID: filterData.queueID,
        workflowFilterID: filterData.workflowFilterID,
        genericFilters: filterData.genericFilters
    },
    traditional: true,
    success: function (data) {
    },
    error: function (error) {
        window.console && console.error(error);
    }
});

我的控制器的 GetTasks 方法:

public ActionResult GetTasks(TaskFilter taskFilter)

public class TaskFilter
{
    public int QueueID { get; set; }
    public int WorkflowFilterID { get; set; }
    public List<GenericFilter> GenericFilters { get; set; }
}

public class GenericFilter
{
    public int AttributeID { get; set; }
    public string FirstValue { get; set; }
    public string SecondValue { get; set; }
}

我可以成功获取我的 queueID 和workflowFilterID. 根据我的设置,我要么得到 null ,要么得到GenericFilters一个空列表,要么得到一个包含 2 个项目的列表,但没有设置任何项目属性。

目前,传递traditional: true结果queueID并被workflowFilterID定义,但genericFilters它是一个包含 0 个项目的列表。如果我注释掉传统参数,我会收到一个包含 2 个空对象的列表。

有人可以帮我解决这个问题吗?我试过包裹genericFilters$.param(filterData.genericFilters, true). 我已经尝试JSON.stringify()过整个对象..

4

1 回答 1

1

我想知道一些事情,但最重要的是,应该发布像列表这样的复杂对象。

试试这个:

$.ajax({
    type: 'POST',
    dataType: 'json',
于 2013-03-01T20:30:35.300 回答