来自URL:https://www.cnblogs.com/kylewell/p/5674564.html

前端我需要通过ajax 传递如下的一个json对象:

var model = {
Parameters: [
{ Name: "A", Value: 1 },
{ Name: "B", Value: 2 }
]
};

所以我的ajax提交代码如下:

$("#btnGetModel").click(function () {
//var model = getParamenters();
var model = {
Parameters: [
{ Name: "A", Value: 1 },
{ Name: "B", Value: 2 }
]
};
if (model.Parameters.length > 0) {
$.ajax({
url: baseUri + "api/Model/Show",
type: "post",
dataType: "json",
data: model,
beforeSend: function (request) {
request.setRequestHeader('Authorization', 'Bearer ' + getCookie("token"));
}
}).then(
function (d) {
if (d.StatusCode == 0) {
//SetModel(d.Message);
initModel(d.Message);
} else {
showMsg(d.Message,"msgContainer");
}
}, function () {
showMsg("请求失败", "msgContainer");
}
);
} else {
showMsg("没有设定正确的参数!", "msgContainer");
}
});

这里注意一下传递的json对象名称为model。

然后看一下后端接口:api/Model/Show。不用看具体实现代码,而要注意传递的参数的类型和参数的名称。

[HttpPost]
[ActionName("Show")]
[Authorize]
public async Task<IHttpActionResult> Generate([FromBody]ModelInfo model)
{
Dictionary<string, double> pars = new Dictionary<string, double>();
if (model.Parameters.Count > 0)
{
foreach (Parameter par in model.Parameters)
{
pars.Add(par.Name, par.Value);
}
}
string newFilePath = await modelMaker.Generate(pars);
if (!string.IsNullOrEmpty(newFilePath))
{
return Json(new ResultData { StatusCode = 0, Message = newFilePath });
}
else
{
return Json(new ResultData { StatusCode = 1, Message = "模型生成失败!" });
}
}

可以看到,传递的参数名称也是model,其实这里是和json对象的名称是一致的。

接着,继续看ModelInfo这个类型

public class ModelInfo
{
public List<Parameter> Parameters { get; set; }
}

这个类里面有个Parameter类型集合的属性,而这个属性的名称是Parameters,而这又是跟json对象的Parameters属性对应。简单来说,这个属性就是一个集合,里面又包含了对象。

下面接着看Parameter这个对象:

public class Parameter
{
public string Name { get; set; }
public double Value { get; set; }
}

这个对象里面的属性名称又和json对象数组中的对象的属性名称又对应上了。

这样前端的json类型就能准确传递到后端来了。

总结:前端不管是多复杂的json数据类型,只要在后端按照这个json数据结构来组合类,并将属性名称一一对应上,就能准确将前端数据传递到后台上。

前端传递给后端复杂类型 webapi 等的更多相关文章

  1. 前端传递给后端且通过cookie方式,尽量传递id

    前端传递给后端且通过cookie方式,尽量传递id

  2. 前端传递的json格式与SpringMVC接收实体类的对应关系

    这篇文章主要是帮助刚刚入行的猿猿尽快适应Restful风格的搬砖生活 @RequestBody注解 基本介绍:@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数 ...

  3. java后端无法接收到前端传递的json对象

    java后端无法接收到前端传递的json对象 一·可能是因为未使用@RequestBody 在Controller层中,要么使用@RestController要么使用@Controller+@@Req ...

  4. 前端angularjs+requirejs+dhtmlx 后端asp.net webapi

    享一个前后端分离方案源码-前端angularjs+requirejs+dhtmlx 后端asp.net webapi   一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家 ...

  5. 前端基于react,后端基于.net core2.0的开发之路(1) 介绍

    文章提纲目录 1.前端基于react,后端基于.net core2.0的开发之路(1) 介绍 2.前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数 ...

  6. Spring MVC前传递和后端接收的参数名不一致处理方式

    前端传递的变量和后端接收的变量名字不一致时,用注解@RequestParam来实现数据的传递 例如:@RequestParam(value="id") //实现商品的分类目录展现 ...

  7. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(4)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  8. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(3)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  9. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(2)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

随机推荐

  1. [sublime3] 在linux下的终端中使用sublime3打开文件

    通过ln命令创建软连接实现 echo $PATH 查看路径 例 我的路径是: /home/rh/anaconda3/bin:/home/rh/bin:/home/rh/.local/bin:/usr/ ...

  2. ArcGIS API For JavaScript 开发(五)要素图层的编辑

    2018-4-3 这篇博客主要讲述要素的层的编辑功能,是基于FeatureLayer的applyEdit方法.由于自己目前正在学习当中,有许多不足之处请各位指出,欢迎指导学习! 主要功能是 1.将地图 ...

  3. springboot-权限控制shiro(一)

    1. 场景描述 (1)权限控制是IT项目特别是企业项目,绕不开的重要模块,接下来结合springboot介绍下权限控制框架shiro. (2)springboot集成shiro的东西有点多,一篇博客完 ...

  4. java练习---9

    //程序员:罗元昊 2017.10.22 package cn.lyh; import com.rupeng.game.GameCore; public class L implements Runn ...

  5. pheatmap绘制“热图”,你需要的都在这

    热图可以聚合大量的数据,并可以用一种渐进色来优雅地表现,可以很直观地展现数据的疏密程度或频率高低. 本文利用R语言 pheatmap 包从头开始绘制各种漂亮的热图.参数像积木,拼凑出你最喜欢的热图即可 ...

  6. 【iOS】XIB 调整视图大小

    使用 XIB 创建视图的时候,拖拽 UIView 到画布时,大小是不可调整的,如何自由调整大小呢? 选中 UIView 并打开属性面板,将 Simulated Metrics 中的 Size 设为 F ...

  7. Ubuntu 系统如何用pycharm开发python—OpenCV

  8. html+css+dom补充

    补充1:页面布局 一般像京东主页左侧右侧都留有空白,用margin:0 auto居中,一般.w. <!DOCTYPE html> <html lang="en"& ...

  9. wamp不显示文件图标

    wamp不显示文件图标 效果如下图 右键图片"在新的标签页打开图片"后会跳转到404页面,并显示The requested URL /icons/unknown.gif was n ...

  10. 记我的一次 Java 服务性能优化

    背景 前段时间我们的服务遇到了性能瓶颈,由于前期需求太急没有注意这方面的优化,到了要还技术债的时候就非常痛苦了. 在很低的 QPS 压力下服务器 load 就能达到 10-20,CPU 使用率 60% ...