Javascript 在我的asp.net项目中调用Webapi时出错

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

这是我的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”,并在数据库中记录保存为空值,似乎您的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);
}
你有这些问题

  • ajax调用的
    内容类型
    错误
  • 数据未正确发布
  • 应使用
    val()
    而不是
    .value
  • API操作应该用
    [HttpPost]
    修饰

  • 不要像那样构建JSON。如果用户在文本字段中输入
    ,他们会立即将其破坏。那么我如何保存我的值,因为它在JS端仅显示空值。您应该使用
    JSON.stringify(model)
    ,在服务器端,您需要定义一个模型,而不是使用。作为旁注,
    async:false
    已被弃用,不应使用,他还试图使用
    [FromBody]字符串
    ,而不是使用模型。@vaibhav可能您缺少模型上的
    [HttpPost]
    方法?@vaibhav,正如john所说,您应该在方法上添加[HttpPost]属性。
    $(“#提交”).value
    可能是
    未定义的
    顺便说一句。。。我猜OP想要
    $(“#submit”).val()
    我将我的值错误更正为val,并且我还定义了[httpost],但我仍然得到了405@Rainman这也是我所理解的