这篇文章主要介绍了jQuery向webApi提交post json数据的方法,非常不错,需要的的朋友参考下
在页面想webApi post json数据的时候,发现webapi不能直接以json的方式接受数据(注:我是没有发现一个很好的方式来post json数据的);但是可以以数据结构的方式传递;
如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//js代码 var d = { Id: "1" , Name: "name" , Value: "OldValue" , 7 }; $.ajax({ type: "post" , url: url1, data: JSON.stringify({ pConfig: d }), success: function (d){ } }); |
1
2
3
4
5
6
7
8
9
10
11
|
public class Diff { public string Id { set; get; } public string Name { set; get; } public string Value { set; get; } } public Diff post([FromBody]Diff pConfig) { List<DiffConfig> s = pConfig; return s; } |
像这样的代码是没有问题的;得到的是一个标准结构的数据;
但是如果改为下面的代码,就会发现没有数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//js代码 var d = [{ Id: "1" , Name: "name" , Value: "Value" , },{ Id: "2" , Name: "name2" , Value: "Value2" , }]; $.ajax({ type: "post" , url: url1, data: JSON.stringify({ pConfig: d }), success: function (d){ } }); |
1
2
3
4
5
|
public List<Diff> post([FromBody]List<Diff> diff) { List<Diff> d = diff; return d; } |
这样的代码会发现,数据没有传过来,后面才发现,原来jq的ajax传输数据类型有问题;传输的数据类型contentType的默认值为 “application/x-www-form-urlencoded”。默认值适合大多数情况。但是却不能适应这次传输的值,把 contentType: ‘application/json’ 设置一下,就可以ok了;数据传输完全没有问题;
1
2
3
4
5
6
7
8
9
10
|
$.ajax({ type: "post" , dataType: 'json' , url: url, contentType: 'application/json' , data: JSON.stringify(d), success: function (d) { } }); |
以上所述是小编给大家介绍的jQuery向webApi提交post json数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!