0

У меня есть этот JQuery вызов:параметры переходят к контроллеру Web API с атрибутом JQuery данных

jQuery.ajax({ 
      type: "POST", 
      url: "http://localhost:5832/api/Login/Post", 
      data: JSON.stringify({ username: 'user12', password: '1234' }), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       alert(data.d); 
      } 
     }); 

Что вызывает этот веб-действие контроллера API:

[System.Web.Http.AcceptVerbs("POST")] 
[System.Web.Http.HttpPost] 
public HttpResponseMessage Post(string username, string password) 
{ 
    string authenticationToken = ""; 
    authenticationToken = hpl.LoginUser(username, password); 
    //Some other code 

    return Request.CreateResponse(HttpStatusCode.OK, authenticationToken); 
} 

Я пытаюсь представить параметры с атрибут данных, но вызов не запускается.

Когда я изменяю URL-адрес, чтобы: http://localhost:5832/api/Login/Post?username=1&password=2

Я в состоянии достигнуть действия контроллера.

Как передать параметры как часть атрибута данных jquery-вызова вместо параметров строки запроса?

Спасибо большое, Лацьале

+0

Просто используйте: 'данные: {имя пользователя:" user12 ", пароль:" 1234 "},' – Hackerman

ответ

0

ASP.Net Web API не поддерживает несколько параметров в теле запроса.

Вы можете отправить только один единственный параметр, используя атрибут FromBody, поэтому вместо нескольких параметров использовать только один объект, который содержит любое имущество, вам нужно:

public class LoginModel { 
    public string username { get; set; } 

    public string password { get; set; } 
} 

[System.Web.Http.HttpPost] 
public HttpResponseMessage Post([FromBody] LoginModel loginModel) 
{ 
    string authenticationToken = ""; 
    authenticationToken = hpl.LoginUser(loginModel.username, loginModel.password); 
    //Some other code 

    return Request.CreateResponse(HttpStatusCode.OK, authenticationToken); 
} 

Как и в стороне: AcceptVerbs("POST") и HttpPost атрибутов являются избыточными , используйте один из них, но не оба.

Смежные вопросы