c# - Getting Error 400 When Calling A Web Api Method Using Ajax
问题描述
I am trying to call a local Web Api method using Ajax. So I have a basic web api app running on visual studio on my local machine. Here's my ajax call
let RegisterUserVM = new Object();
RegisterUserVM.Name = name;
RegisterUserVM.Username = username;
RegisterUserVM.Password = password;
$.ajax({
url: mURL + "api/Default/RegisterUser",
method: "POST",
data: JSON.stringify(RegisterUserVM),
contentType: "application/json; charset=utf-8",
dataType: "jsonp"
}).done(function( msg ) {
console.log("Done function");
console.log(msg);
}).fail(function( jqXHR, textStatus ) {
console.log("Fail function");
console.log(jqXHR);
console.log(textStatus);
});
}
I have a simple Web api method as follows
[HttpPost]
public string RegisterUser(/*RegisterUserVM registerUserVM*/ string Name, string username, string Password)
{
return "";
}
As you can see I have tried passing the object and parametes via the query string but I still keep getting an 400 error bad request when I try and call this method via ajax from jQuery. What is wrong?
解决方案
修复ajax
$.ajax({
url: mURL + "/api/Default/RegisterUser",
type: "POST",
data: JSON.stringify(RegisterUserVM),
contentType: "application/json; charset=utf-8",
dataType: "json"
success: function( msg ) {
console.log("Done function");
console.log(msg);
},
error: function( jqXHR, textStatus ) {
console.log("Fail function");
console.log(jqXHR);
console.log(textStatus);
}
});
和行动
[HttpPost]
public string RegisterUser([FromBody] RegisterUserVM registerUserVM)
{
return "";
}
您将需要创建一个视图模型
public class RegisterUserVM
{
public string Name {get; set;}
... ans so on
}
或者你也可以试试这个
$.ajax({
url: mURL + "/api/Default/RegisterUser",
type: "POST",
data: { registerUserVM : RegisterUserVM },
success: function( msg ) {
console.log("Done function");
console.log(msg);
},
error: function( jqXHR, textStatus ) {
console.log("Fail function");
console.log(jqXHR);
console.log(textStatus);
}
});
并删除 [frombody]
[HttpPost]
public string RegisterUser(RegisterUserVM registerUserVM)
{
return "";
}
推荐阅读
- php - 捕获用于呈现我的网页的 php 文件的代码
- angular - 如何在移动设备中加载应用程序时使用jspdf生成pdf文档而不改变对齐方式 - Angular 8
- arangodb - 如何使用现有集合(文档和边)创建图表
- sql - 无法使用 AS 设置新列名
- java - 从池中取消 CallableStatement
- git - 为什么 git 不输出我提交的消息?
- python - python - 断言复数几乎相等
- amazon-web-services - 在 AWS Secrets Manager 中创建密钥
- python-3.x - 如何解决 pandas 数据框列无法识别其价值
- reactjs - 在反应js中的单击按钮上生成pdf