【问题标题】:ASP.NET MVC4 C# Problems to post JSON dataASP.NET MVC4 C# 发布 JSON 数据的问题
【发布时间】:2014-01-28 18:10:25
【问题描述】:

我在 ASP.NET MVC 4 上发布 json 数据时遇到问题。

当我调用 ajax 函数时,我收到以下错误:302 Found。

jQuery 代码:

var dataJson = [];

dataJson.push({
    name: "Renato Leite"
});

$.ajax({
    url: "/Controller/MyAction",
    type: 'POST',
    dataType: 'json',
    data: JSON.stringify(dataJson),
    contentType: 'application/json; charset=utf-8',
    async : false,
    success: function (data) {
        var message = data.Message;
    }
});

C#代码:

public ActionResult MyAction(string name)
{
    return Json(new { Message = "Sucess" }, JsonRequestBehavior.AllowGet);
}

请求的返回:

状态码:找到 302

如何解决?

【问题讨论】:

    标签: c# jquery asp.net-mvc json asp.net-mvc-4


    【解决方案1】:

    您的操作只接受一个字符串参数。当前,您正在传递一个字符串数组。因此你得到了错误

    随便用

    var dataJson = {
        name: "Renato Leite"
    };
    

    【讨论】:

    • 不返回“Json.stringify”:错误 500 =[
    • 我发现了问题,我有两个具有相同名称的操作,因此发生了错误。无论如何感谢帮助! :)
    【解决方案2】:

    您不需要对单个字符串进行字符串化。尝试用这个替换数据线

    data: { name: "Renato Leite" },
    

    【讨论】:

      【解决方案3】:

      奇怪,我把你的确切代码放到我的项目中,我得到了正确的数据返回。

      也许尝试将结果更改为 JsonResult 而不是 ActionResult?

      【讨论】:

        【解决方案4】:

        您应该将以下属性添加到您的操作方法中,因为您的 ajax 调用使用 'POST' 方法

        [HttpPost]
        

        【讨论】:

          【解决方案5】:

          检查这个解决方案 -

          控制器 -

          public ActionResult SubmitTag(string test)
          {
              return Json(new { Message = "Sucess" }, JsonRequestBehavior.AllowGet);
          }
          

          查看 -

          <script src="~/Scripts/jquery-1.10.2.min.js"></script>
          <script>
              $(function () {
                  $("#ClickMe").click(function () {
          
                      var tag = {
                          "test": "SampleTag"
                      };
          
                      $.ajax({
                          url: "@Url.Action("SubmitTag")",
                          type: "POST",
                          data: JSON.stringify(tag),
                          contentType: "application/json; charset=utf-8",
                          success: function (data) {
                              alert(data.Message);
                          },
                          error: function (response) {
                              alert(response.responseText + "e");
                          }
                      });
                  });
              });
          </script>
          
          <input type="button" id="ClickMe" value="ClickMe" />
          

          输出 -

          【讨论】:

            【解决方案6】:

            正如@nboisvert 指出的那样,您正在发布,因此您的操作需要[HttpPost] 属性。 正如@Satpal 指出的那样,您的 JSON 有效负载实际上是一个对象数组,它们被发布到一个只接受一个字符串参数的方法。

            var dataJson = [];
            
            dataJson.push({
                name: "Renato Leite"
            });
            JSON.stringify(dataJson); // "[{"name":"Renato"}]" notice the square brackets
            

            您可以轻松发布帖子

            data: JSON.stringify({name: "Renato Leite"});
            

            【讨论】:

              【解决方案7】:

              我发现了问题,我有两个同名的操作,所以发生了错误。无论如何感谢帮助! :)

              【讨论】:

                【解决方案8】:

                尝试将控制器操作的参数更改为可枚举的字符串,例如 string[] 名称或 IEnumerable 名称。方括号用于数组。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-10-23
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-12-19
                  • 1970-01-01
                  相关资源
                  最近更新 更多