我正在尝试为此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
。根据我的设置,我会为GenericFilters
获取空值,空列表或包含2个项目的列表,但不会设置任何项目属性。
目前,传递traditional: true
会导致queueID
和workflowFilterID
被定义,但genericFilters
是一个包含0个项目的列表。如果我注释掉传统的参数,我会收到一个包含2个空对象的列表。
有人可以帮我解决这个问题吗?我已尝试在genericFilters
中换行$.param(filterData.genericFilters, true)
。我在整个对象上尝试了JSON.stringify()
..
答案 0 :(得分:1)
我想知道一些事情,但最重要的是,应该发布像列表这样的复杂对象。
试试这个:
$.ajax({
type: 'POST',
dataType: 'json',