使用ajax调用web Api 方法中出现的问题总结

一,Get请求

1,无参数Get请求,跟平常写ajax请求一样,并无什么差别

$.ajax({
            url: ‘.../api/User/UserVerify,
            type: ‘get‘,
            success: function (json) {
                alert(json);
            },
            error: function () {
                alert("error");
            }
        });

此时,后台代码api代码可以直接public string UserVerify(){},需要在action上添加HttpGet特性

2,有一个或多个参数的Get请求

$.ajax({
            url: ‘.../api/User/UserVerify?loginName=admin&passWord=123456‘,
            type: ‘get‘,
            success: function (json) {
                alert(json);
            },
            error: function () {
                alert("erroe");
            }
        });

此时,后台Api代码可以public string LoginVerify(string loginName,string passWord){},需要在action上添加HttpGet特性

二,Post请求

1,无参数的Post请求

$.post(
            ‘.../api/User/UserVerify‘,
           function (json) {
                alert(json);
            });

此时,后台调用需要在Action上添加HttpPost特性,   public string LoginVerify(){}

2,一个参数的Post请求

在post请求中,方法的参数必须要用 [FromBody] 属性来修饰才可以, [FromBody] 就告诉Web API 要从post请求体重去获取参数的值。也就是要写成如下形式:

[HttpPost,ActionName("UserVerify")]
        public string LoginVerify([FromBody]string loginName){}

同时,前台调用时如果还是按之前的写法

$.post(
            ‘.../api/User/UserVerify‘,
            { loginName:"admin"},
           function (json) {
                alert(json);
            });

则会出现如下情况,即:可以正常跳转,可是获取不到相应传输的值。因为Web API 要求请求传递的 [FromBody] 参数,肯定是有一个特定的格式,才能被正确的获取到。而这种特定的格式并不是我们常见的 key=value 的键值对形式。Web API 的模型绑定器希望找到 [FromBody] 里没有键名的值,也就是说, 不是 key=value ,而是 =value 。

所以,接下来我们把调用参数修改为如下形式:

需要注意的时,在此时一定要把服务重新生成

3,两个或多个参数的Post请求

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

这里,我们可以将 loginName和 passWord 封装成一个User类

后台方法需要

[HttpPost,ActionName("UserVerify")]
        public string LoginVerify([FromBody]UserExEntity user)
        {
            try
            {
                return "姓名" + user.loginName+"密码"+user.passWord;
            }
            catch
            {
                return null;
            }
        }

前台调用需要

此时,我们可以看到Form Data 的格式是 key=value&key=value 这种表单数据格式,我们平时使用的比较多的一般为json格式。

时间: 2024-11-07 07:11:19

使用ajax调用web Api 方法中出现的问题总结的相关文章

用Ajax调用web api,解决URL太长的问题;

本来是用的WCF,但是服务需要多种方式调用(后台+前端Ajax),最终局面就是我在WCF每个服务中都判断一下↓ #region 解决接收不到Ajax中传来的参数... if (jsonParames == null && HttpContext.Current.Request.QueryString["参数"] != null) jsonParames = HttpContext.Current.Request.QueryString["参数"];

ASP.NET MVC4中调用WEB API的四个方法

http://tech.it168.com/a2012/0606/1357/000001357231_all.shtml [IT168技术]当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法.就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强大的服务.然而,越来越多的互联网应用,希望将服务只是通过HTTP发布出去,而不是使用复杂的SOAP协议.为了解决这个问题,ASP.NET WebAPI就出现了.

Swift使用WKWebView在iOS应用中调用Web的方法详解

这篇文章主要介绍了Swift使用WKWebView在iOS应用中调用Web的方法详解,使用WKWebView便等于使用和Safari中相同的JavaScript解释器,用来替代过去的UIWebView,需要的朋友可以参考下 自从iOS8开始,Apple引入了WKWebView欲代替UIWebView.相比而言,WKWebView消耗内从更少,功能也更加强大.让我们来看看WKWebView怎么使用吧! 0.初始化(1)首先需要引入WebKit库 复制代码代码如下: #import <WebKit/

WebApi系列~通过HttpClient来调用Web Api接口

HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api的方法,基于api项目的特殊性,它需要有一个完全安全的环境,所以,你的api控制器看起来有点特别,只有5个方法,而且都是标准的http方法,我觉得这种设计很不错,很清晰,而且为了实现安全性,它不支持使用传统的表单数据,取而代之的是FromBody参数,它指拿HttpRequestMessage里参数,而不是所

Asp.Net Web API 2第三课——.NET客户端调用Web API

Asp.Net Web API 导航 Asp.Net Web API第一课——入门http://www.cnblogs.com/aehyok/p/3432158.html Asp.Net Web API第二课——CRUD操作http://www.cnblogs.com/aehyok/p/3434578.html 前言 本教程演示从一个控制台应用程序,使用HttpClient调用Web API.我们也将使用上一个教程中建立的Web API.你可以直接在http://www.cnblogs.com/

asp.net(c#)用Ajax调用web 服务实现省市县三级联动

1.先说说硬件配置,我最开始是在Win7(I7 4770,8G RAM,2T硬盘)里装ubuntu10.10 64位系统(4G RAM,200G 硬盘)进行源码编译,大概花了3个多小时.而且还多次出现outofmemoryerror 错误.最后将硬件升级为I7 4770.16G内存.2T硬盘,不装虚拟机,直接跑Ubuntu 10.10系统,Swap分区为16G,编译一次大概花了40分钟,没有报任何错误. 所以不推荐在虚拟机里面跑. 2.根据官方文档配置编译环境: 官方文档说的是在"发布包/Sof

【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)

参考页面: http://www.yuanjiaocheng.net/ASPNET-CORE/core-static-files.html http://www.yuanjiaocheng.net/ASPNET-CORE/setup-mvc.html http://www.yuanjiaocheng.net/ASPNET-CORE/mvc-design-pattern.html http://www.yuanjiaocheng.net/ASPNET-CORE/mvc-routing.html h

React Native教程 - 调用Web API

react-native官网Fetch介绍:https://facebook.github.io/react-native/docs/network.html#content react-native中不支持$,也就是说我们无法使用$HTTP来调用API,根据react-native官网教程,我们可以使用fetch,这也是一个更好的网络API,它在react native中默认可以使用. 在react-native项目中,我们还是使用我们的惯用方法,写一个服务js来放我们的所有API,但是在re

jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法

1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是"application/json", (3)data传递的数据必须是严格的json数据,如"{'a':'aa','b':'bb'}",而且参数必须和静态方法的参数一 一对应 (4)aspx的后台方法返回的数据默认形式是"{'d':'返回的内容'}",所