jq向webApi提交post json数据
在页面想webApi post json数据的时候,发现webapi不能直接以json的方式接受数据(注:我是没有发现一个很好的方式来post json数据的);但是可以以数据结构的方式传递;
如下:
1
//js代码
var d = {
2
Id: "1",
3
Name: "name",
4
Value: "OldValue",};
8
$.ajax({
9
type: "post",
10
url: url1,
11
data: JSON.stringify(d),
13 14
success:function(d){
15
16
}
17
});
Diff 2 { Id { set; get; } Name { set; get; } Value { set; get; } 6 } 7 public Diff post([FromBody]Diff pConfig) 8 { 9 List<DiffConfig> s = pConfig; 10 return s; 11 }
View Code像这样的代码是没有问题的;得到的是一个标准结构的数据;
但是如果改为下面的代码,就会发现没有数据
d = [{ 3 Id: "1", 4 Name: "name", 5 Value: "Value", 6 },{ 7 Id: "2", 8 Name: "name2", 9 Value: "Value2", 10 }]; 11 $.ajax({ 12 type: "post", 13 url: url1, 14 data: JSON.stringify({ 15 pConfig: d 16 }), 17 success:function(d){ 18 19 } 20 });
View Code
1 public List<Diff> post([FromBody]List<Diff> diff) 2 { 3 List<Diff> d = diff; 4 return d; 5 }
View Code这样的代码会发现,数据没有传过来,后面才发现,原来jq的ajax传输数据类型有问题;传输的数据类型contentType的默认值为 "application/x-www-form-urlencoded"。默认值适合大多数情况。但是却不能适应这次传输的值,把 contentType: 'application/json' 设置一下,还有就是,要注意的是直接把数组通过 json.stringify 传递过去( data:JSON.stringify(d), ),而不是想上面那种画蛇添足的加上一句(data:JSON.stringify( {pConfig:d}) ),这样就可以ok了;数据传输完全没有问题;
$.ajax({ type: , dataType: , url: url, contentType: , data: JSON.stringify(d), success: function (d) { } });