【问题标题】:how to fix this my following code is not working如何解决这个问题我的以下代码不起作用
【发布时间】:2019-11-07 01:38:28
【问题描述】:

我正在尝试发布数据并尝试从控制器再次返回并将其显示到警报框但不知道为什么这不起作用

这里是控制器代码

 [HttpPost]
        public ActionResult getRequirmentsByProject(string projectname)
        {

            return Json(projectname, JsonRequestBehavior.AllowGet);
        }

这是我的前端代码

<input id="projName" type="text" name="Name" required="" value="javascript">

这是我的脚本代码

 var projectname = document.getElementById('projName').value;
    $.ajax({
        url: '/Worksheet/getRequirmentsByProject',
        type: 'post',
        data: { projectname },
        contentType: 'application/json; charset=utf-8',
        success: function (html) {
            alert(html);
        },
        error: function (error) {
            $(that).remove();
            DisplayError(error.statusText);
        }
            });

【问题讨论】:

  • 究竟是什么不工作?
  • [HttpPost]Json(projectname, JsonRequestBehavior.AllowGet); 部分有点令人困惑。
  • 我可以试试httpget吗?

标签: c# ajax post model-view-controller


【解决方案1】:

在你的情况下,我给你一个简单的例子,告诉你如何使用 AJAX 将表单变量POST 发送到控制器:

<script type="text/javascript">
 var projectname = document.getElementById('projName').value;

  var json = {
              projectname: projectname
             };

    $.ajax({
        url: '@Url.Action("getRequirmentsByProject", "Worksheet")',
        type: 'post',
        dataType: "json",
        data: { "json": JSON.stringify(json)},
        success: function (data) {
            alert(data);
        },
        error: function (error) {
            $(that).remove();
            DisplayError(error.statusText);
        }
      });

</script>

在你的控制器中,你可以得到这个值:

using System.Web.Script.Serialization;

[HttpPost]
public ActionResult getRequirmentsByProject(string json)
{

        var serializer = new JavaScriptSerializer();
        dynamic jsondata = serializer.Deserialize(json, typeof(object));

        //Get your variables here from AJAX call
        string projectname= jsondata["projectname"];    

    return Json(projectname);
}

【讨论】:

    【解决方案2】:

    它的httpget和写错了

    [HttpGet]
            public ActionResult getRequirmentsByProject(string projectname)
            {
    
                return Json(projectname, JsonRequestBehavior.AllowGet);
            }
    

    这是正确的方法谢谢指出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2021-09-28
      • 2022-11-25
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      相关资源
      最近更新 更多