【问题标题】:Form in ASP.NET Web APIASP.NET Web API 中的表单
【发布时间】:2020-06-04 17:17:38
【问题描述】:

我的 Web API 中的表单有问题。表格非常简单。用户输入一个字符串,控制器接收该字符串并将其插入到带有 id 的数据库中。与数据库的连接有效,我可以安全地读取它。

EDIT 这是控制器中的代码。 EDIT 2 这是正确且有效的控制器

public ActionResult PostMyData(string json) 
{
        try
        {
            var newEntry = new Questions() { Id = json.Id, Question= json.Question};
            context.Questions.Add(newEntry);
            context.SaveChanges();
            return Ok();
        } 
        catch (Exception e)
        {
            return BadRequest();
        }
}

这是 HTML 页面的一部分。 编辑 这是不返回错误的更新脚本。 EDIT 2 这是正确且有效的脚本

<script language="Javascript">
    $(document).on('click', '#submitButt', function () {
        var myquestion = $('#question').val();
        var json = {
            Id : 1,
            Question: myquestion
        }
        $.ajax({
            type: "POST",
            url: "api/Simple",
            data: JSON.stringify(json),
            dataType: "json",
            contentType:"application/json",
            success: function (data) {
                alert(data);
            },
            error: function (data) {
                alert("An Issue has occured");
            }
        });
    })
</script>

【问题讨论】:

  • 这里有问题吗?
  • 这不是问题或对问题的有用描述。请阅读What do you mean "it doesn't work"?
  • 你能告诉我们错误吗?并将您的问题放在帖子中而不是在评论中,以提供更多帮助

标签: javascript c# asp.net-web-api


【解决方案1】:

关于你的场景,你可以这样做:

<input type="text" id="question" name="question" />
<input type="button" id="submitBtn" name="submitBtn" value="Send"/>

<script>
$(document).on('click', '#submitBtn', function () {
    var myquestion=$('#question').val();
    var json = {
      myquestion: myquestion
     };

     $.ajax({
       type: 'POST',
       url: "api/Simple/PostMyData",
       dataType: "json",
       data: JSON.stringify(json),
       contentType: "application/json",
       success: function (data) {
        alert(data);
       },
       error: function (data) {
        alert("An Issue has occured");
       }
    });
}) 
</script>

你的Controller 看起来像:

    using System.Web.Script.Serialization;

    [HttpPost]
    public ActionResult Post([FromBody] string json) 
    {
        var serializer = new JavaScriptSerializer();
        dynamic jsondata = serializer.Deserialize(json, typeof(object));

        //Get your variables here from AJAX call
        var myquestion= jsondata["myquestion"];
        try
        {
            var newEntry = new Question() { Id = 1, Question= myquestion};
            context.Question.Add(newEntry);
            context.SaveChanges();
            return Ok();
        } catch (Exception e)
        {
            return BadRequest();
        }
    }

【讨论】:

  • 感谢您的回复。但是,控制器似乎没有收到请求。我相信问题出在 URL 上。
  • @Luiss.PEP 也许 JS 端可能有一些错误。您也可以在这里将操作方法​​名称更改为更有意义的名称,例如 public ActionResult PostMyData(string json) 。另请参阅我对您定义的按钮的编辑。我添加了一个id 字段
  • 你能在调试时点击控制器方法吗?这可能与您的数据库上下文有关。
  • 检查您浏览器上的控制台。它将显示您的脚本中是否有任何错误。此外,您还没有为您的姓名输入设置 id。检查更新的答案。
  • 最后,多亏了你,我解决了这个问题。您可以在我的问题中看到最终解决方案。
猜你喜欢
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 2019-08-08
  • 2011-05-23
  • 2014-03-19
  • 1970-01-01
相关资源
最近更新 更多