JQuery,序列化html数组

时间:2011-12-15 13:57:57

标签: php javascript jquery json

我的HTML看起来像这样:

<form id="kinodForm">
    <input type="text" name="element[5]" value="krispy kreme" />
    <input type="text" name="element[6]" value="in" />
    <input type="text" name="element[7]" value="n" />
    <input type="text" name="element[8]" value="out" />
    <input type="text" name="element[9]" value="drive" />
</form>

有些javascript看起来像这样:

$(document).ready(function(){
    var kinod = $('#kinodForm').serializeArray();
    $.post('test.php', {form: kinod}, function(data){
        console.log(data);
    });
});

ajax请求绑定的PHP脚本很简单:

<?php print_r($_POST); ?>

发布请求的结果将记录到控制台。它输出的内容如下:

[form] => Array ( 
    [0] => Array ( [name] => element[5] [value] => 'krispy kreme' ) 
    [1] => Array ( [name] => element[6] [value] => 'in' ) 
    [2] => Array ( [name] => element[7] [value] => 'n' ) 
    [3] => Array ( [name] => element[8] [value] => 'out' ) 
    [4] => Array ( [name] => element[9] [value] => 'drive' ) 
)

此输出并不完美,因为我希望能够在上面的PHP脚本中执行此操作而不使用正则表达式:

<?php
    $form = $_POST['form'];
    foreach($form as $id => $value){
        echo 'element['.$id.'] -> '.$value.'<br>';
    }
?>

当我希望它们保持与HTML表单中定义的相同时,此代码显然会使用{0,1,2,3,4}的值$id{5,6,7,8,9}

我觉得我不应该解析html数组ID。建议?

2 个答案:

答案 0 :(得分:1)

试试这个:

$.post('test.php', kinod, function(data){
    console.log(data);
});

答案 1 :(得分:0)

为什么不使用.serialize()然后通过'&amp;'爆炸要将表单数据放入数组,然后可以循环?