这是我的api代码,它在使用get方法
时返回成功的json数据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"并使用空值记录保存在数据库中
答案 0 :(得分:1)
似乎你的ajax网址错了。您应该指定操作名称(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);
}
答案 1 :(得分:0)
如果您想使用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);
}
你有这些问题。
content-type
。val()
代替.value
。[HttpPost]
进行修饰。