【问题标题】:serialise array will inputs of same name序列化数组将输入同名
【发布时间】:2011-09-13 14:19:11
【问题描述】:

我有 3 个输入,其中 2 个我想要在同一个数组中(name="notes['a']" 和 name="notes['b']")但是当我使用 jquery'serializeArray( ) 它把它们都放在同一个“水平”上。但我想使用 php 将张贴的笔记数组序列化到数据库中,方法是使用不属于数组的输入的方法(即 name="basic"

foreach($_POST['data'] as $var => $value) {

    if(!strstr(strtolower($value['name']),'added')) $q1 .= "".$value['name']."='".$value['value']."',";

}

echo $q = "UPDATE ".$_POST['table']." SET ".rtrim($q1,',')." WHERE ".$_POST['idField']."=".$_POST['id']." ";    


*the array $_POST['data'] is getting posted as;*
 [data] => Array
        (
            [0] => Array
                (
                    [name] => notes[\'a\']
                    [value] => dan@jynk.net
                )

            [1] => Array
                (
                    [name] => notes[\'b\']
                    [value] => Daniel Crabbe
                )

            [2] => Array
                (
                    [name] => test
                    [value] => Daniel Crabbe
                )

        )

但我想应该是这样的?

[data] => Array
        (
            [0] => Array{
                Array(
                    [name] => notes[\'a\']
                    [value] => dan@jynk.net
                )
                Array
                (
                    [name] => notes[\'b\']
                    [value] => Daniel Crabbe
                )
            )


            [1] => Array
                (
                    [name] => test
                    [value] => Daniel Crabbe
                )

        )

如何让 jquery 尊重输入数组中的数组?欢迎任何帮助...

更新 没有这样的,但希望 [0] 层上的所有内容都可以轻松访问...

Array
(
    [0] => Array
        (
            [name] => cm_email_to
            [value] => dan@jynk.net
        )

    [1] => Array
        (
            [name] => cm_name_to
            [value] => Daniel Crabbe
        )

    [2] => Array
        (
            [name] => cm_moveToList
            [value] => 
        )

)

*inputs*
<input id="cm_email_to" name="cm_email_to" value="dan@jynk.net" class="toPostCM" />
<input id="cm_name_to" name="cm_name_to" value="Daniel Crabbe" class="toPostCM" />

*jquery*
var dataCMSettings = $(".toPostCM").serializeArray();

【问题讨论】:

  • UPDATE ".$_POST['table'].": 不要忘记转义您在 SQL 查询中输入的任何数据,否则您将容易受到 sql 注入的攻击

标签: php jquery arrays serialization post


【解决方案1】:

尝试从输入名称中取出数组索引:

<input name="notes[]" value="val1" />
<input name="notes[]" value="val2" />

【讨论】:

  • 需要名称和值。现在完全删除了 notes[] 但将每个字段添加为另一个对象,即 [1]、[2] 等。
【解决方案2】:

从 HTML 中的数组索引中删除引号,因此 array['a'] 变为 array[a]

【讨论】:

  • 谢谢 - 尝试过,但一直将每个字段作为单独的数组条目,而我需要 [0] 中的所有内容...
【解决方案3】:

好的 - 这正是我需要的......

var params = {};

$('.toPostCM').each(function(index,value) {
    params[value.name] = value.value;
});

console.log(params);

*gives me*
Array
(
    [cm_email_to] => dan@jynk.net
    [cm_name_to] => Daniel Crabbe
    [cm_moveToList] => 
)

谢谢大家...

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 2014-07-30
    • 1970-01-01
    相关资源
    最近更新 更多