ajax调用web-api为GET工作但不适用于POST

时间:2015-03-09 13:50:41

标签: jquery ajax asp.net-web-api

我的javascript函数:

function CheckLogin() {
        var user = { "UserName": $('#UN').val(), "Password": $('#P').val() };
       $.ajax({

            url: 'http://localhost/MvcRazorClient/api/HomeApi/SignIn',
            type: 'POST',
            data: user,
            async: false,
            contentType:'application/json',
            dataType: 'json',
            success: function (data) {
                if (data == true)
                {

                    alert('true');

                }
                else{
                    alert('false');
                }


                    },
                    error: function () {
                        alert('error');

                    }
                });
            }

我的web-api方法:

[HttpPost]
public bool SignIn(string UserName, string Password)
{
return true;
}

当我使用GET请求时,我能够将数据,即用户传递给web-api,但是当使用POST时我无法通过。 请帮忙。

2 个答案:

答案 0 :(得分:0)

创建一个c#对象,如:

public class User
{
  public string UserName {get;set;}
  public string Password {get;set;}
}

然后更新您的控制器以接收用户而不是两个字符串,例如

[HttpPost] 
public bool SignIn(User user) 
{ 
  return true; 
}

你可能还需要更新你的javascript对象,因为ajax调用告诉服务器期望一个json对象,你可能需要将你的用户对象创建到

var user = { "userName": $('#UN').val(), "password": $('#P').val() };

答案 1 :(得分:0)

function CheckLogin() {
        var user = { "UserName": $('#UN').val(), "Password": $('#P').val() };
        user = JSON.stringify(user);//changes made here
       $.ajax({

            url: 'http://localhost/MvcRazorClient/api/HomeApi/SignIn',
            type: 'POST',
            data: user,
            async: false,
            contentType:'application/json',
            dataType: 'json',
            success: function (data) {
                if (data == true)
                {

                    alert('true');

                }
                else{
                    alert('false');
                }


                    },
                    error: function () {
                        alert('error');

                    }
                });
            }

我的web-api方法:

[HttpPost]
public bool SignIn(HttpRequestMessage req)//changes made here
{
var data = req.Content.ReadAsStringAsync().Result;// to extract data
      JObject o = JObject.Parse(data);
return true;
}