近期一个项目需要使用到web api

 在使用过程中,对应get请求方式的使用基本没出什么问题

但是对于post请求状况百出。

今将遇到的的问题列出。以作借鉴。

 问题  -----post方式服务器端接收值为null

 

 1. 多个参数需要post过去

  ajax代码

       如下

js代码

复制代码
function login() {
                    $.ajax({
                        url: "/api/Login",
                        type: "post",
                        dataType: "json",
                        data: { "name": document.getElementById("name").value, "Password": document.getElementById("pwd").value },
                        success: function (data) {
                            isLogin(data)
                            //createDb();
                        }
                    }).fail(
                    function (xhr, textStatus, err) {
                        alert('Error: ' + err);
                    });

                }
复制代码

c#代码

1
2
3
4
5
public UsersModel POST(string name, string Password)
      {
          //var a = ModelLogin.user(name.name, name.Password);
         
      }

  报错接收不到值

原因 。 post方式只能接受一个参数而且必须放在

FromBody 里用FromBody特性标识

正确代码如下

1
2
3
4
5
public UsersModel POST([FromBody]UsersModel name)
{
    var a = ModelLogin.user(name.name, name.Password);
    return a;
}

  需要将 

1
UsersModel定义为类<br><br>2.需要post list 对象<br>这个直接写js正确代码<br><br>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$.ajax({
          url: "/api/Exams",
          type: "post",
          dataType: "json",
          contentType: 'application/json; charset=utf-8',
          data: JSON.stringify(json),
 
          success: function (data) {
              alert(data);
          }
      }).fail(
function (xhr, textStatus, err) {
    alert('Error: ' + err);
});
    

  注意事项。

data数据建议直接写js对象,对应c#建立的对象。

喜欢拼接方式的key需要留空

参考资料

http://stackoverflow.com/questions/14779679/jquery-posts-null-instead-of-json-to-asp-net-web-api

http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1#sending_simple_types

 

本文原文出处:http://www.cnblogs.com/zhang888/p/3606965.html