2014-02-10 42 views
0

我正在使用mvc5 web api 我试图将多个参数传递给web api web方法。 我使用这个参数 我的代码需要过滤结果: Java脚本:在网页API控制器如何将对象列表传递给jquery ajax获取

var options = { 
url: '/api/normdata/getdata', 
type: 'GET', 
dataType: 'json', 
data: [{ 'name': 'n1' }, { 'name': 'n2' }, { 'name': 'n3' }, { 'name': 'n4' }] 
}; 
$.ajax(options).then(querySucceeded).fail(queryFailed); 

function querySucceeded(data) { 
    var objectArray = []; 
     ... 
    } 

function queryFailed(jqXHR, textStatus) { 
    var msg = 'Error retreiving data. ' + jqXHR + " " + textStatus; 
    errorMessage(msg); 
} 

代码:

[Route("api/normdata/getdata")] 
    public IEnumerable<string> getdata([FromBody] List<object> somedata) 
    { 
     List<string> stringList = new List<string>(); 
     var o = somedata; 
     return stringList; 
    } 

问题是somedata变量始终是空 请指教。 莱谢克

回答

0

试试这个,

var data = [{ 'name': 'n1' }, { 'name': 'n2' }, { 'name': 'n3' }, { 'name': 'n4' }] 
var options = { 
    url: '/api/normdata/getdata', 
    type: 'POST', 
    dataType: 'json', 
    data: JSON.stringify(data) 

}; 
$.ajax(options).then(querySucceeded).fail(queryFailed); 

function querySucceeded(data) { 
    var objectArray = []; 
    ... 
} 
function queryFailed(jqXHR, textStatus) { 
    var msg = 'Error retreiving data. ' + jqXHR + " " + textStatus; 
    errorMessage(msg); 
} 

Documentation link

+0

嗨,谢谢你的回答。 – user3293136

1

你发送GET请求,但在控制器指定[FromBody]。尝试将您的请求更改为POST

+0

嗨,谢谢你的回答。不幸的是,在我改变为'POST'后,根本不会调用getdata方法。谢谢。 leszek – user3293136

+0

在您的浏览器的开发工具的JavaScript控制台或网络选项卡中的任何错误?服务器上有任何异常?你的行为是否有'[HttpGet]'属性? –

+0

我已添加[HttpPost]属性,然后调用该函数。不幸的是对象的数量(somedata)= 0.谢谢。 – user3293136