Javascript 在我的asp.net项目中调用Webapi时出错
这是我的api代码,在使用get方法时返回成功的json数据Javascript 在我的asp.net项目中调用Webapi时出错,javascript,c#,jquery,asp.net-mvc,asp.net-web-api,Javascript,C#,Jquery,Asp.net Mvc,Asp.net Web Api,这是我的api代码,在使用get方法时返回成功的json数据 public Question[] Get() { getQuestion obj = new AllDataAccess.getQuestion(); return obj.questionList().ToArray(); } 这是我的post方法数据,它接受值并保存在数据库中 public void Post([FromBody] string question) { SaveQuestion obj
public Question[] Get() {
getQuestion obj = new AllDataAccess.getQuestion();
return obj.questionList().ToArray();
}
这是我的post方法数据,它接受值并保存在数据库中
public void Post([FromBody] string question) {
SaveQuestion obj = new AllDataAccess.controller.SaveQuestion();
obj.savaData(question);
}
这是调用我的api的方法
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'http://localhost:53893/api/values',
data: "{'question':'" + $("#submit").value + "'}",
dataType: 'json',
async: false,
success: function(data, status) {
console.log(status);
},
error: function(err) {
console.log(err);
}
});
现在的问题是,当我发布带有一个文本框值的数据时,它会在控制台中给我一条消息“nocontent”,并在数据库中记录保存为空值,似乎您的ajax url是错误的。您应该指定操作名称
(post)
。另外,使用JSON.stringify
从javascript对象检索正确的JSON
var postData = { question:$("#submit").val() };
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'http://localhost:53893/api/values/post',
data: JSON.stringify(postData),
dataType: 'json',
success: function (data,status) {
console.log(status);
},
error: function (err) {
console.log(err);
}
});
在服务器端,您应该为Post
方法创建一个模型类
public class PostInput
{
public string Question { get; set; }
}
然后Post
方法如下所示
[HttpPost]
public void Post([FromBody]PostInput input)
{
SaveQuestion obj = new AllDataAccess.controller.SaveQuestion();
obj.savaData(question);
}
如果要使用
FromBody
,可以这样做。
JavaScript
$.ajax({
type: "POST",
//default content-type, could be omitted
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
url: 'http://localhost:53893/api/values/post',
data: {'': $("#submit").val()}
});
API行动
[HttpPost]
public void Post([FromBody]string question)
{
SaveQuestion obj = new AllDataAccess.controller.SaveQuestion();
obj.savaData(question);
}
你有这些问题
内容类型
错误val()
而不是.value
[HttpPost]
修饰不要像那样构建JSON。如果用户在文本字段中输入
,
,他们会立即将其破坏。那么我如何保存我的值,因为它在JS端仅显示空值。您应该使用JSON.stringify(model)
,在服务器端,您需要定义一个模型,而不是使用。作为旁注,async:false
已被弃用,不应使用,他还试图使用[FromBody]字符串
,而不是使用模型。@vaibhav可能您缺少模型上的[HttpPost]
方法?@vaibhav,正如john所说,您应该在方法上添加[HttpPost]属性。$(“#提交”).value
可能是未定义的
顺便说一句。。。我猜OP想要$(“#submit”).val()
我将我的值错误更正为val,并且我还定义了[httpost],但我仍然得到了405@Rainman这也是我所理解的