我的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。建议?
答案 0 :(得分:1)
试试这个:
$.post('test.php', kinod, function(data){
console.log(data);
});
答案 1 :(得分:0)
为什么不使用.serialize()然后通过'&amp;'爆炸要将表单数据放入数组,然后可以循环?