如何使用 jquery ajax 将 web api 控制器中的 web 表单值作为模型类传递

Posted

技术标签:

【中文标题】如何使用 jquery ajax 将 web api 控制器中的 web 表单值作为模型类传递【英文标题】:how can i pass my webform value in webapi controller as a model class using jquery ajax 【发布时间】:2018-06-11 11:06:05 【问题描述】:

这是我的 ajax 代码,它在我的 api 中传递两个值

 function submitData() 
            var username = $("#username").val();
            var password = $("#password").val();
            $.ajax(
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                url: 'http://localhost:53893/api/login/checkLogin',
                data: JSON.stringify([username, password]),
                dataType: 'json',
                async: false,
                success: function (data) 

                    console.log(data);

                ,
                error: function (err) 

                    console.log(err);
                
            );
        

这是我的模型类,我想在我的 api 控制器中传递它

 public  class Login
    
        public ObjectId _id  get; set; 

        public string username  get; set; 

        public string password  get; set; 

    

这是我接受这两个参数的 api 控制器方法

[HttpPost]
        public string checkLogin(Login login)
        
            getLogin log = new getLogin();
     Boolean check =       log.checkLogin(login);

              if(check == true)
            
                return "login done";
            
              else
            
                return "failed to login";
            
        

现在我想要的是在我的 api 控制器中接受这个模型类,我尝试了很多,但它总是为空

【问题讨论】:

【参考方案1】:

js代码:

            data: JSON.stringify('username': username,'password': password)

API 代码:

        [HttpPost]
        public string checkLogin([FromBody] Login login)
        
            getLogin log = new getLogin();
     Boolean check =       log.checkLogin(login);

              if(check == true)
            
                return "login done";
            
              else
            
                return "failed to login";
            
        

【讨论】:

在我的控制器中仍然得到空值 从js创建类并字符串化对象,我想你知道怎么做 对不起,我不知道你能解释一下 嘿!不提兄弟。【参考方案2】:

通过 ajax 传递的数据应该具有它必须接受的相同数据结构。

尝试构建一个类似的对象

JSON.stringify('_id': id,  'username': username,   'password': password),

或者

将它们作为两个字符串分别传递,然后在控制器中将它们分配给对象。

[HttpPost]
public string checkLogin(string username, string password)

  Login login = new Login();
  login.username = username;
  login.password = password;
  getLogin log = new getLogin();
  Boolean check = log.checkLogin(login);
  if(check == true)
  
    return "login done";
  
  else
  
    return "failed to login";
  

然后在ajax传递

data: "'username': '" + username + "', 'password': '" + password + "'"

【讨论】:

以上是关于如何使用 jquery ajax 将 web api 控制器中的 web 表单值作为模型类传递的主要内容,如果未能解决你的问题,请参考以下文章

jQuery .ajax 和同源策略

如何使用 jQuery 将 Windows 身份验证传递给 Web 服务?

如何使用 jQuery AJAX 发布到 RESTful Web 服务?

如何在 Spring Web MVC 中使用 Ajax JQuery

如何在 asp.net Web 应用程序中使用 jquery ajax 使用 Web 服务

如何使用 jQuery Ajax 调用从 ASP.NET Web Api 下载 CSV 文件