前端调用

html

<div class="row"><form id="queryForm"><input name="id" type="text" /><input name="name" type="text" /></form>
</div><div class="row"><div class="panel panel-warning"><div class="panel-heading">Get</div><div class="panel-body"><a class="btn btn-primary" id="btn1">无参</a><a class="btn btn-primary" id="btn2">1个参数</a><a class="btn btn-primary" id="btn3">2个参数</a><a class="btn btn-primary" id="btn4">实体参数1 <span class="label label-warning">[FromUri]</span></a><a class="btn btn-primary" id="btn5">实体参数2 <span class="label label-warning">(传递反序列化){ 参数: JSON.stringify(json) }</span></a></div></div><div class="panel panel-success"><div class="panel-heading">post</div><div class="panel-body"><p><div><input name="postsubmit" type="text"/></div></p><p><a class="btn btn-success" id="postbtn1">1个参数<span class="label label-danger">key为空</span></a><a class="btn btn-success" id="postbtn2">1个json<span class="label label-danger">(传递序列化)传递:JSON.stringify({ id: 1, pass: '123', name: "tangsansan" }),接收:实体,</span><span class="label label-warning">contentType: 'application/json'</span></a></p><p><a class="btn btn-success" id="postbtn5">1个表单<span class="label label-danger">(传递序列化)传递:JSON.stringify($('#queryForm').serialize()),接收:dynamic,</span><span class="label label-warning">contentType: 'application/json'</span></a><a class="btn btn-success" id="postbtn6">1个表单<span class="label label-danger">传递:$('#queryForm').serialize(),接收:实体</span></a></p><p><a class="btn btn-success" id="postbtn7">1个复杂json<span class="label label-danger">(传递序列化)传递:{ "User": "{ id: 1, pass: '123', name: "tangsansan" }", "Info": "info" },接收:JObject</span></a></p></div></div>
</div>

js

<script>var $queryform = { id: 1, pass: '123', name: "tangsansan" }$(function () {//get传递无参$('#btn1').on('click', function () {$.ajax({url: 'http://localhost:809/api/Values/GetList',type: 'get',success: function (data) {alert(data)}});});//get传递1个参数$('#btn2').on('click', function () {$.ajax({url: 'http://localhost:809/api/Values/Get',type: 'get',data: { id: 1 },success: function (data) {alert(data)}});});//get传递2个参数$('#btn3').on('click', function () {$.ajax({url: 'http://localhost:809/api/Values/GetList',type: 'get',data: { id: 1, pass: 'aa' },success: function (data) {alert(data)}});});//get传递实体1 [fromurl]$('#btn4').on('click', function () {$.ajax({url: 'http://localhost:809/api/Values/GetUserList',type: 'get',data: $queryform,success: function (data) {alert(data)}});});//get传递实体2 JSON.stringify字符串$('#btn5').on('click', function () {$.ajax({url: 'http://localhost:809/api/Values/UserJsonList',type: 'get',data: { userJson: JSON.stringify($queryform) },success: function (data) {alert(data)}});});//post传递一个参数$('#postbtn1').on('click', function () {var $posttext = $('input[name=postsubmit]').val();$.ajax({url: 'http://localhost:809/api/Values/PostOne',type: 'post',//data: { "value": $posttext }, //key=value,但后台接收为空data: { "": $posttext },  //key为空success: function (data) {alert(data);}});});//post传递json字符串$('#postbtn2').on('click', function () {$.ajax({url: 'http://localhost:809/api/Values/PostTwoForm',type: 'post',contentType: 'application/json',     //必须加上,声明为jsondata: JSON.stringify($queryform),    success: function (data) {alert(data);}});});//post传递一个表单//通过dynamic动态类型能顺利得到多个参数,省掉了[FromBody]这个累赘,//并且ajax参数的传递不用使用"无厘头"的{"":"value"}这种写法,//有一点需要注意的是这里在ajax的请求里面需要加上参数类型为Json,即 contentType: 'application/json', 这个属性。$('#postbtn5').on('click', function () {$.ajax({url: 'http://localhost:809/api/Values/PostOneForm',type: 'post',contentType: 'application/json',     //必须加上,声明为jsondata: JSON.stringify($('#queryForm').serialize()),success: function (data) {alert(data);}});});//post传递一个表单$('#postbtn6').on('click', function () {$.ajax({url: 'http://localhost:809/api/Values/PostTwoForm',type: 'post',data: $('#queryForm').serialize(),success: function (data) {alert(data);}});});//post传递复杂json字符串$('#postbtn7').on('click', function () {$.ajax({url: 'http://localhost:809/api/Values/PostThreeeForm',type: 'post',data: { "User": $queryform, "Info": "info" },success: function (data) {alert(data);}});});});
</script>

后台

public class ValuesController : ApiController{[HttpGet]public IEnumerable<string> GetList(){return new string[] { "value1", "value2" };}[HttpGet]public string Get(int id){return "value";}[HttpGet]public IEnumerable<string> GetList(int id, string pass){return new string[] { id.ToString(), pass.ToString() };}//Get传参:实体,必须添加 FromUri[HttpGet]public string GetUserList([FromUri]User user){return string.Format("id:{0},name:{1},pass:{2}", user.id.ToString(), user.name, user.pass);}[HttpGet]public string UserJsonList(string userJson){User user = JsonConvert.DeserializeObject<User>(userJson);return string.Format("id:{0},name:{1},pass:{2}", user.id.ToString(), user.name, user.pass);}// POST api/values[HttpPost]public string PostOne([FromBody]string value){return value;}//一个表单(一个json)[HttpPost]public string PostOneForm(dynamic value){string user = Convert.ToString(value);return user;}//一个表单(一个实体)[HttpPost]public string PostTwoForm(User user){//Dictionary<string, object> objects = GetRequest();return string.Format("id:{0},name:{1},pass:{2}", user.id.ToString(), user.name, user.pass);}[HttpPost]public string PostThreeeForm(JObject jObject){//Dictionary<string, object> objects = GetRequest();string username = HttpContext.Current.Request.Form["User[name]"];dynamic json = jObject;JObject User = json.User;User user = User.ToObject<User>();//Dictionary<string, object> objects = GetRequest();return string.Format("id:{0},name:{1},pass:{2}", user.id.ToString(), user.name, user.pass);}// PUT api/values/5public void Put(int id, [FromBody]string value){}// DELETE api/values/5public void Delete(int id){}/// <summary>/// 获取所有参数   /// </summary>/// <returns>///     A System.Collections.Generic.Dictionary<string,object> value.../// </returns>public Dictionary<string, object> GetRequest(){var getrequest = HttpContext.Current.Request.Form;Dictionary<string, object> dict = new Dictionary<string, object>();for (int i = 0; i < getrequest.AllKeys.Length; i++){dict.Add(getrequest.GetKey(i), getrequest[i]);}return dict;}}

WebApi的调用-1.前端调用相关推荐

  1. 跨域调用webapi web端跨域调用webapi

    web端跨域调用webapi 在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案. 通过自己的研究以及在网上看了一些大神的博客,写了一个Demo 首先新建一个webapi的 ...

  2. java注解@remote,Dwr3.0纯注解(纯Java Code配置)配置与应用浅析二之前端调用后端

    首先当我们将Dwr3配置好以后,我们可以在浏览器中测试一下,查看一下我们配置的Dwr有没有生效,方法是 http://localhost:[你的服务器端口号,默认不写为80]/[ Web 名称 ]/d ...

  3. 在web前端调用后台java程序(java类)的方式

    在web前端调用后台java程序(java类)的方式: 首先静态html标签是无法直接调用java程序的,但是可以通过imput button按钮点击,onclick事件调用一个js函数,用这个js函 ...

  4. 前端调用后端接口的错误(400)

    前端调用后端接口时,浏览器debug出现Failed to load resource: the server responded with a status of 400 (Bad Request) ...

  5. python前端调用后端模型_前端调用后端的方法(基于restful接口的mvc架构)

    1.前端调用后台: 建议用你熟悉的一门服务端程序,例如ASP,PHP,JSP,C#这些都可以,然后把需要的数据从数据库中获得,回传给客户端浏览器(其实一般就是写到HTML中,或者生成XML文件)然后在 ...

  6. DUBBO:前端调用后端服务返回类名

    1.美图 2.背景 前端调用了一个DUBBO的接口 但是返回值却是后端的一个类 后端如下 查看网关报错了 [2019-12-18 14:06:46.398] - error: [24310] dubb ...

  7. 前端调用后端接口 xhr 只看到一次 实际调用两次_持续演进的接口自动化测试方案...

    点击关注"有赞coder" 获取更多技术干货哦- 作者:Henry 部门:美业测试 前言 接口自动化测试是个老生常谈的话题,基本上每个测试团队都会涉及,市面上大部分文章会从如何设计 ...

  8. Nginx解决前端调用后端接口跨域问题

    Nginx解决前端调用后端接口跨域问题 参考文章: (1)Nginx解决前端调用后端接口跨域问题 (2)https://www.cnblogs.com/wangymd/p/11200746.html ...

  9. 前端调用后台验证码接口

    前端调用后台验证码接口 首先我们后台验证码用hutool包的工具类 引入依赖 <dependency><groupId>cn.hutool</groupId>< ...

  10. 前端调用第三方接口跨域问题(淘宝)

    前端调用第三方接口跨域问题 百度了好久,大部分的文章都前篇一律的说jsonp跨域,要不就是说配置CROS.看到那种文章出处应该都是一家,心好累.首先来说淘宝目前的接口是不支持jsonp请求的,配置CR ...

最新文章

  1. 2021年大数据ELK(二十五):添加Elasticsearch数据源
  2. linux java乱码怎么解决,linux中显示中文乱码如何解决
  3. Struts2 datetimepicker 日期月份乱码解决
  4. AngularJS学习---REST和自定义服务(REST and Custom Services) ngResource step 11
  5. 第1章 Hello MFC
  6. 匿名内部类 可以访问外部类_Java 内部类与外部类的互访使用小结
  7. 算法导论 练习12.3
  8. python 录制网易云登陆_Python爬虫教程,爬取网易云的音乐
  9. 【LeetCode】【数组】题号:628,三个数组成的乘积最大
  10. python基础:集合(set)
  11. 通过反汇编一个简单的C程序理解计算机是如何工作的
  12. matlab提取刚度矩阵,ANSYS刚度矩阵的提取与解析
  13. 滑动窗口平均值c语言,数据流滑动窗口平均值 · sliding window average from data stream...
  14. raid5换硬盘显示ready_[原创]戴尔服务器raid5更换硬盘状态foreign怎么改成ready
  15. 二维码条形码生成打印软件C#源码,根据变量自动添加抬头
  16. python的皮卡丘如何写代码,用python画皮卡丘的代码
  17. centos7/win7 双系统安装教程
  18. SQL——MySQL Driver
  19. CodeForces - 743B
  20. 全程软件测试之测试需求分析与计划(1)

热门文章

  1. 在GRIDVIEW中合并单元格
  2. Power Tools for TFS 11 Beta
  3. 正则表达式的几种字符判断(包括数字,字母组合等)
  4. 基础知识04 - 零基础入门学习汇编语言04
  5. 支持一切积极向上的自发行为
  6. OO第三单元总结——JML
  7. 2017.5.20欢(bei)乐(ju)赛解题报告
  8. NotePad++常用快捷键。——Arvin
  9. 板邓:wordpress编辑器发布文章自动首行缩进
  10. iOS 8 Auto Layout界面自动布局系列5-自身内容尺寸约束、修改约束、布局动画