【问题标题】:jQuery post array - ASP.Net MVC 4jQuery post 数组 - ASP.Net MVC 4
【发布时间】:2012-09-16 08:59:33
【问题描述】:

我今天花了大约 8 个小时来解决这个问题。我查看了很多解决方案,但无法获得相同的结果。我有一种预感,这与对 ASP.Net 相对较新有关。

这是我尝试模仿但没有运气的最新问题。 https://stackoverflow.com/questions/10007722/post-array-as-json-to-mvc-controller#=

How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?

问题的基本概要: 我有一个 json 对象数组,我想传递给我的控制器。当我传递它显示的数据时,可以说例如 3 个项目,但它们的值没有传递,或者它只是显示什么都没有传递。 Firebug 显示它通过了它,所以我假设某些东西没有正确设置,并且它不允许它在 C# 端正确设置该变量。

我尝试了一些方法,并在下面列出: 设置 1: 我尝试嘲笑我在第二个链接中看到的内容:

$.ajax({
        type: 'Post',
        cache: false,
        url: '/Workflow/Home/UpdateStepPositions',
        data: { 'steps': ['1','2','3'] },
        async: false,
        success: function (data) {
            console.debug(data);
        },
        error: function (data) {
            console.debug(data);
        }
    });

 Controller
 [HttpPost]
    public ActionResult UpdateStepPositions(string[] steps){

        var bresults = new {
            Success = false,
            Message = "Unable to update step positions."
        };

        return Json(bresults);
    }

我什至无法让那个简单的设置工作..它到达函数并显示没有任何通过....

设置 2:

 list = new Array();
    list.push({ "step": 1, "position": 1 });
    list.push({ "step": 2, "position": 2 });
    list.push({ "step": 3, "position": 3 });

    $.ajax({
        type: 'Post',
        cache: false,
        url: '/Workflow/Home/UpdateStepPositions',
        data: JSON.stringify({ 'steps': list }),
        async: false,
        success: function (data) {
            console.debug(data);
        },
        error: function (data) {
            console.debug(data);
        }
    });

    Controller
   [HttpPost]
    public ActionResult UpdateStepPositions(List<UpdatedSteps> steps){
        var bresults = new {
            Success = false,
            Message = "Unable to update step positions."
        };

        return Json(bresults);
    }

   Class
   public class UpdatedSteps {
    public string Step { get; set; }
    public string Position { get; set; }
}

任何人都可以阐明我所缺少的东西或指出正确的方向吗?希望它是一些简单的东西,只是一个新手错误!

【问题讨论】:

  • 除非绝对必要,否则您不应该在 ajax 调用中使用 async: false。 AJAX 应该是异步的,关闭它可能会导致浏览器在 ajax 调用期间变得无响应。

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


【解决方案1】:

MVC 通过 contentType 检测它接收到的数据类型。这是工作示例:

$(function () {
    $.ajax({
        type: 'Post',
        dataType: 'json',
        url: '/Workflow/Home/UpdateStepPositions',
        data: JSON.stringify({ steps: ['1', '2', '3'] }),
        contentType: 'application/json; charset=utf-8',
        async: false,
        success: function (data) {
            console.debug(data);
        },
        error: function (data) {
            console.debug(data);
        }
    });
});

现在请求一切正常:

Content-Type:        application/json; charset=utf-8
X-Requested-With:    XMLHttpRequest

和回应:

Content-Type:        application/json; charset=utf-8

【讨论】:

  • 我会试试这个并报告。
  • 好的,我复制并粘贴了该代码,这是我在控制器中得到的,同样的问题我一直在努力解决这一天!步骤=null
  • @Austin Reynolds 抱歉,尝试新的解决方案。
  • 你的成功者。我以前在那里有过,但我没有正确设置字符串化。非常感谢您的帮助!
  • cache:false 属性对 POST 请求无效:api.jquery.com/jQuery.ajax。但是,好帖子,它帮助了我! +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
相关资源
最近更新 更多