GET请求

1.无参数get请求

一般get请求有两种写法,一种是 $.get()   一种是$.ajax({type:"get"}), 我个人比较喜欢用后者。

下面例子主要是get无参数请求,获取人员列表并将数据返回到前台,并将返回的json数据转换成字符串弹出,以便知道是否请求成功,并且返回的数据是否正确

 1    $.ajax({
2 url: "/api/Person/getList",
3 type: "get",
4 success: function (data) {
5 alert(JSON.stringify(data));
6 alert("成功");
7 },
8 error: function () {
9 alert("错误");
10 }
11 });

后台代码

 1  public class PersonController : ApiController
2 {
3
4 public List<Person> getList()
5 {
6 var PersonList = new List<Person>(){
7 new Person{Name="张和",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"},
8 new Person{Name="张丽",Sex="女",Duty="工程师",CompanyName="北京XX科技有限公司"},
9 new Person{Name="张春雷",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"}
10 };
11 return PersonList;
12 }
13 }

2.多个参数的Get请求,参数格式:data:{},例如 一个参数的get请求是data:{ " Name": " 张丽 " },两个参数:data:{ " Name ": " 张丽 ","Sex":"女" },多个参数只是在{}里加入多个参数而已。

 1   $.ajax({
2 url: "/api/Person/GetPerson",
3 type: "get",
4 data:{"Name":"张丽","Sex":"女"},
5 success: function (data) {
6 alert(data.Name+" "+data.Duty+" "+data.CompanyName);
7 },
8 error: function () {
9 alert("错误");
10 }
11 });

后台代码

 1    public Person GetPerson(string Name,string Sex)
2 {
3 var PersonList = new List<Person>(){
4 new Person{Name="张和",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"},
5 new Person{Name="张丽",Sex="女",Duty="工程师",CompanyName="北京XX科技有限公司"},
6 new Person{Name="张春雷",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"}
7 };
8 var p = PersonList.FirstOrDefault(f => f.Name == Name&&f.Sex==Sex);
9 return p;
10 }

POST请求

1.无参数的POST请求

无参数的POST请求和GET请求是一样的,只不过是ajax里的type:"get"改成type:"post"而已,后台函数要加 [HttpPost]标签,主要是标记该函数是post请求函数,如果get请求是请求不进去该函数的。

2.一个参数的POST请求

一个参数的post请求和GET请求的方式不一样,后台函数的参数必须用[FromBody]标记,这样才能访问到该函数,如果不加[FromBody] , ASP.NET Web API能够正确的识别我们的UserController 控制器处理Post / api/Person ,但却不能找到一个可以接受的方法来处理请求。不加[frombody],用url传值可以访问到,类似于

/api/Person/Post_Person?name="张丽"。那么有人就说了后台参数加了[FromBody] ,js如下是不是就可以请求成功哪

 1  $.ajax({
2 url: "/api/Person/Post_Person",
3 type: "post",
4 data:{"Name":"张丽"},
5 success: function (data) {
6 alert("成功");
7 alert(data);
8 alert(data.Name + " " + data.CompanyName);
9 },
10 error: function () {
11 alert("错误");
12 }
13 });

答案是失败的,确切的说是可以访问到PersonControler里的Post_Person方法的,但是Post_Person函数的参数是获取不到前台ajax传递过来的值得,为什么呢?是因为Web API 要求请求传递的 [FromBody] 参数,是有一个特定的格式,才能被正确的获取到。而这种特定的格式并不是我们常见的 key=value 的键值对形式。Web API 的模型绑定器希望找到 [FromBody] 里没有键名的值,也就是说, 不是 key=value ,而是 =value 。

所以 将data:{"Name":"张丽" }改成data:{"":"张丽" } 这样后台函数才可以正确接收到传递过来的参数值

3.多个参数的POST请求

有人会认为多个参数的Post请求,就是后台函数加多个带[FromBody]标记的参数即可,如果你是这样想的,那么你错了。请一定要记住多个参数POST请求,

[FromBody] 修饰的参数只能有一个 。我们需要对传递的多个参数进行封装才行。

 1 var Person = {
2 Name: "张丽",
3 Sex: "女",
4 Duty: "ddd",
5 }
6
7 $.ajax({
8 url: "/api/Person/Post_PersonObj",
9 type: "post",
10 data: Person,
11 success: function (data) {
12 alert("成功");
13 alert(data);
14 alert(data.Name + " " + data.CompanyName);
15 },
16 error: function (data) {
17 alert(data.responseText);
18 }
19 });

后台代码

 1 [HttpPost]
2 public Person Post_PersonObj([FromBody]Person per)
3 {
4 var PersonList = new List<Person>(){
5 new Person{Name="张和",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"},
6 new Person{Name="张丽",Sex="女",Duty="工程师",CompanyName="北京XX科技有限公司"},
7 new Person{Name="张春雷",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"}
8 };
9 var p = PersonList.FirstOrDefault(f => f.Name == per.Name&&f.Sex==per.Sex);
10 return p;
11 }

ajax GET和POST请求web api 的几种方式的更多相关文章

  1. 【.Net】调用Web API的几种方式

    引言 记录一下调用Web API的几种方式,以调用百度API为例. HttpWebRequest HttpWebRequest位于System.Net命名空间,是常用的调用Web API类库. str ...

  2. .Net Core使用HttpClient请求Web API注意事项

    HttpClient 使用HttpClient可以很方便的请求Web API,但在使用时有一些需要注意的地方,不然会给你的程序带来毁灭性的问题. HttpClient是一个继承了IDisposable ...

  3. Struts2中访问web元素的四种方式

    Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...

  4. Tomcat中部署web应用的三种方式

    Tomcat中部署web应用的三种方式(静态部署)       第一种,针对war或解压后的war,最为常用的是直接操作webapp目录,将完整的war包或者web应用直接放到webapp目录下.使用 ...

  5. 在Tomcat中部署web项目的三种方式

    搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...

  6. #Eclipse web工程 部署 三种方式 3

    Eclipse web工程 部署 三种方式 3.热部署 在Eclipse中,实现 修改一个.java文件或者.jsp文件甚至是配置文件,不需要重启WEB服务器的前提下让修改生效,实现tomcat自动加 ...

  7. Eclipse web工程 部署 三种方式 2

    Eclipse web工程 部署 三种方式 2.插件 tomcat插件下载: http://www.eclipsetotale.com/tomcatPlugin.html 解压缩后, com.sysd ...

  8. Eclipse web工程 部署 三种方式 1

    Eclipse web工程 部署 三种方式 1.run on 前提: 安装 好 eclipse.jdk.tomcat 然后 新建一个 web工程 注意此处Default output folder 最 ...

  9. tomcat发布web项目的三种方式

    tomcat发布web项目的三种方式 方式一: 配置tomcat 安装目录下的conf/server.xml <Host name="loaclhost">标签里面添加 ...

随机推荐

  1. ios开发中如何实现软件版本更新

    苹果给了我们一个接口,能根据应用id请求一些关于应用的信息.我们可以根据返回的信息,来判断版本是否和应用的版本一致,如果不一致,那么就出现新的版本了.这时,就需要向用户提醒有新的版本,需要更新.具体步 ...

  2. Android核心基础(四)

    1.联系人表结构 添加一条联系人信息 package com.itheima.insertcontact; import android.app.Activity; import android.co ...

  3. 三角形div的原理

    三角形div原理 首先我们写一个正常的方形div样式,但是我们把它的宽度和高度都设置为零,并且边框线设置的粗一点: { width:0px: height:0px; Border:20px solid ...

  4. javascript-智能社-JS基础A笔记

    JavaScript基础A JavaScript组成 ECMA : 全称ECMAScript,解释器.计算机语言的翻译 DOM:全称Document Object Model,赋予了JS操作HTML的 ...

  5. 【剪枝】HDU 1010——tempter of the bone

    来源:点击打开链接 看上去数据规模很小,但是必须要剪枝,否则直接爆TLE. 通过这个题可以练习奇偶剪枝. 另外:还有一个优化方式,如果所有步数走完了门还没关,则直接返回结果"NO" ...

  6. IOS开发之tableview只选中一行

    场景:一个弹出层,包含一个Tableview,每一行为一个选择条件,且只能选择一个.选中后文体有颜色变化,后面还会有对勾.选择另一个后,前一个恢复成普通状态. 示例代码: -(void)tableVi ...

  7. PowerShell脚本传递参数

    在编写PowerShell脚本的时候,可以通过给变量赋值的方法输出想要的结果,但这样的话,需要改动脚本内容.其实也可以在脚本中定义参数,然后再在执行脚本的时候对参数赋值,而无需改动脚本内容. 在Pow ...

  8. xargs i I{} 参数说明

    find . -type f | xargs -I{} md5sum {} find . -type f -name "*.txt" | xargs -i cp {} /tmp/k ...

  9. 音频播放AVFoundation框架

    一.系统声音 ios应用中的提醒声音.游戏背景音乐等.可以播放的格式有CAF.AIF.WAV. 系统声音服务提供了一个API,但是没有操作声音和控制音量的功能,因此如果为多媒体或者游戏创建专门的声音, ...

  10. html笔记05:html、css、javascript综合案例

    1.首先是html代码: <!-- markup time --> <div class="wrapper wb"> <div class=" ...