前端调用

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', //必须加上,声明为json
data: 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', //必须加上,声明为json
data: 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/5
public void Put(int id, [FromBody]string value)
{
} // DELETE api/values/5
public 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的前端调用

    WebApi前端调用 HTML代码: <!DOCTYPE html><html> <head> <meta charset="utf-8" ...

  2. 使用OAuth、Identity创建WebApi认证接口供客户端调用

    前言 现在的web app基本上都是前后端分离,之前接触的大部分应用场景最终产品都是部署在同一个站点下,那么随着WebApi(Restful api)的发展前后端实现的完全分离,前端不在后端框架的页面 ...

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

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

  4. Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口

    1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...

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

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

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

    1.项目中遇到的问题描述: 前端调用zuul统一网关服务接口,请求状态码200,但是无返回数据. 浏览器控制台报错信息:No  Access-Control-Allow-Origin header i ...

  7. 在Bootstrap开发框架基础上增加WebApi+Vue&Element的前端

    基于Metronic的Bootstrap开发框架是我们稍早一点的框架产品,界面部分采用较新的Bootstrap技术,框架后台数据库支持Oracle.SqlServer.MySql.PostgreSQL ...

  8. 《oracle每天一练》触发器不能调用或间接调用COMMIT,ROLLBACK等DCL语句

    触发器不能调用或间接调用COMMIT,ROLLBACK等DCL语句 在触发器中不能运行 ddl语句和commit,rollback语句 ddl语句:DDL语句用语定义和管理数据库中的对象,如Creat ...

  9. 反射-优化及程序集等(用委托的方式调用需要反射调用的方法(或者属性、字段),而不去使用Invoke方法)

    反射-优化及程序集等(用委托的方式调用需要反射调用的方法(或者属性.字段),而不去使用Invoke方法)   创建Delegate (1).Delegate.CreateDelegate(Type, ...

随机推荐

  1. windows开启powershell在此系统中禁止执行脚本

    首次在计算机上启动 Windows PowerShell 时,现用执行策略很可能是 Restricted(默认设置). Restricted 策略不允许任何脚本运行.若要了解计算机上的现用执行策略,请 ...

  2. CodeForces - 348D Turtles(LGV)

    https://vjudge.net/problem/CodeForces-348D 题意 给一个m*n有障碍的图,求从左上角到右下角两条不相交路径的方案数. 分析 用LGV算法.从(1,1)-(n, ...

  3. Git与GitHub学习笔记(四)合并远程分支

    在这里的前提: 1.你已经fork 源作者的项目到你自己的仓库了 2.git clone 自己仓库fork的项目,注意地址,这里是自己的账号下的地址,而不是源作者的项目地址哦 3.在本地修改代码,gi ...

  4. Hammer.js 移动端手势库,多点触控插件

    jquery用法: 引入3个JS:<script src="jquery.js"></script> <script src="hammer ...

  5. 编写优秀jQuery插件技巧

    1. 把你的代码全部放在闭包里面 这是我用的最多的一条.但是有时候在闭包外面的方法会不能调用. 不过你的插件的代码只为你自己的插件服务,所以不存在这个问题,你可以把所有的代码都放在闭包里面. 而方法可 ...

  6. MQTT协议-MQTT协议解析(MQTT数据包结构)

    协议就是通信双方的一个约定,即,表示第1位传输的什么.第2位传输的什么…….在MQTT协议中,一个MQTT数据包由:固定头(Fixed header). 可变头(Variable header). 消 ...

  7. POJ 1061 青蛙的约会 (扩展欧几里得算法)

    题目链接 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件 ...

  8. react框架实现点击事件计数小案例

    下面将以一个小案例来讲解react的框架的一般应用,重点内容在代码段都有详细的解释,希望对大家有帮助 代码块: 代码块: import React from 'react'; import React ...

  9. Python 入门基础16 -- ATM + 购物车

    ATM + 购物车 1.需求分析 2.设计程序以及程序的架构 设计程序的好处: - 扩展性强 - 逻辑清晰 3.分任务开发 4.测试 黑盒: 白盒: 对程序性能的测试 5.上线运行 # Tank -- ...

  10. SpringBoot整合MyBatis(XML)

    (1).添加依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId> ...