【问题标题】:Passing array to controller using jquery Post [closed]使用jquery Post将数组传递给控制器​​[关闭]
【发布时间】:2012-05-17 18:43:08
【问题描述】:
var sc = new Array();
var i =0;
el.find(".colorable").each(function () {
    sc[i++] = $(this).attr("src");
});
$.post("/Edit/ChangeImageColor", { src : sc , s: source, t: target }, function () {
    alert("done");
});

我正在尝试将数组 ( sc ) 传递给服务器,但它在 src 中显示为 null

    public JsonResult ChangeImageColor(string[] src, string s, string t)
    {

谁能告诉我我错过了什么?

【问题讨论】:

  • 服务器是什么语言,你用什么格式发送参数?
  • 您必须知道服务器如何期望这样一个值数组。 jQuery 默认将数组编码为src[]=1&src[]=2(注意[])。也许你需要src=1&src=2...你应该检查一下,看看api.jquery.com/jQuery.param
  • 你应该使用json.org
  • 确定sc 在发送之前实际上已被填满?
  • 服务器语言为 c# 并以默认格式(字符串)发送

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


【解决方案1】:

尝试如下改变你的操作方法

 public JsonResult ChangeImageColor(IEnumerable<string> src, string s, string t)
{

【讨论】:

    【解决方案2】:

    如果您使用的是 ASP.NET MVC 3,您可以将其作为 JSON 请求发送:

    var sc = new Array();
    var i = 0;
    el.find(".colorable").each(function () {
        sc[i++] = $(this).attr("src");
    });
    $.ajax({
        url: '/Edit/ChangeImageColor',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({ src: sc, s: source, t: target }),
        success: function() {
            alert("done");
        }
    });
    

    如果您使用的是旧版本的 ASP.NET MVC,您可以查看 following blog post,它说明了如何集成自定义 json 提供程序工厂,允许您将 JSON 请求发送到控制器操作。

    【讨论】:

    • 完美答案谢谢,我正在使用 MVC 3
    • 我已更新您的问题以放置正确的标签:asp.net-mvc-3
    • 谢谢,我会记住这一点,以后再问其他问题
    【解决方案3】:

    尽管您的(可能是服务器端)参数传递错误,我认为您可能会发现这很有用:

    var sc = el.find(".colorable").map(function() {
        return this.src;
    }).get();
    

    这是一种收集数组中一组元素的属性的更简单的方法。

    【讨论】:

      猜你喜欢
      • 2012-01-07
      • 1970-01-01
      • 2018-10-07
      • 2016-10-28
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      相关资源
      最近更新 更多