【问题标题】:Jquery Post multidimensional array via $.AjaxJquery 通过 $.Ajax 发布多维数组
【发布时间】:2011-01-03 04:10:32
【问题描述】:

我正在尝试发布一个 ajax 调用,就好像它是以下表单元素一样:

<input type="text" name="data[BlogPost][title]" />

但我没有运气,这是我的来源:

    $.ajax({
        url: "/add/",
        type: "POST",
        data: ( /* what do I do here */),
        success: function(msg){
            alert(msg);
        }
    });

我尝试过嵌套对象,但这只会生成服务器响应,例如: 大批 'data' => 字符串'[object Object]' (length=15)

这对任何人都没有好处!

有什么想法吗?

【问题讨论】:

    标签: jquery ajax multidimensional-array


    【解决方案1】:

    你试过serialize()吗?

    $.ajax({
        url: "/add/",
        type: "POST",
        data: $('#myForm').serialize(),
        success: function(msg){
            alert(msg);
        }
    });
    

    我不能 100% 确定它适用于多维数组,但值得一试。

    【讨论】:

    • 这在某些情况下会起作用,但我实际上并没有从中获取数据的表单
    • 序列化?你在跟我开玩笑吗?真的吗?一个怪异的词为我节省了已经在数组、.each 和其他废话上花费的时间,然后我发现它只是一个叫做 SERIALIZE 的词?或更多术语 $('#myForm').serialize() WOW。我正在使用带有 MVC 2 Preview 2 框架的 ASP.NET 4.0 Beta 2、DataAnnotations、客户端 Jquery Validations、jQuery AJAX、“通知”jQuery 插件以及其他一些只是为了重置页面密码。我喜欢 MVC 2...
    【解决方案2】:

    我猜,[..] 方括号不是输入元素名称的有效字符?

    如果我错了,请纠正我。

    更新:哎呀,好吧,我错了。无论如何都会把它留在这里作为“学习”信息。对于像我这样的其他人:)

    【讨论】:

    • 这实际上是Rails和PHP处理数组和多维数组的方式。
    • 它们是有效的,用来表示数组。
    • 感谢您撤回反对票,无论是谁:)
    • 哈哈……是我。我想要我的代表点,既然你更新了答案,我就把它收回了:)
    【解决方案3】:

    只需将字段名称放在引号中,还请注意我使用对象文字作为数据参数 {} 与您在问题中使用的括号:

    $.ajax({
        url: "/add/",
        type: "POST",
        data: { 'data[BlogPost][title]':'My New Title'} ,
        success: function(msg){
            alert(msg);
        }
    });
    

    【讨论】:

    • 只是好奇,这行得通吗? data: {'data[BlogPost][title]':$("input[name='data[BlogPost][title]']").val()},?
    • 您可能需要转义 jQuery 选择器中的 [] 字符:docs.jquery.com/Selectors 最底部的列表显示需要转义的内容。与有效的 W3C 名称相比,这与 jQuery 和 CSS 选择器有关。
    猜你喜欢
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多