JavaScript二维数组到PHP
我必须向PHP页面发送一个二维JavaScript数组。 实际上,我正在开发一个表单生成器,用户可以在其中添加或删除字段。JavaScript二维数组到PHP,php,javascript,jquery,arrays,Php,Javascript,Jquery,Arrays,我必须向PHP页面发送一个二维JavaScript数组。 实际上,我正在开发一个表单生成器,用户可以在其中添加或删除字段。 使用JavaScript(jQuery)添加(或删除)这些字段。当用户完成并点击“发布”按钮时,我必须获取所有相关字段并将它们发送到一个PHP页面,该页面将使用它构建一个真正的表单。 我找到了一种方法,但我很确定它不是很干净: addedFields = new Array(); $("#add-info .field").each(function() { add
使用JavaScript(jQuery)添加(或删除)这些字段。当用户完成并点击“发布”按钮时,我必须获取所有相关字段并将它们发送到一个PHP页面,该页面将使用它构建一个真正的表单。
我找到了一种方法,但我很确定它不是很干净:
addedFields = new Array();
$("#add-info .field").each(function() {
addedFields.push(new Array($(this).find('.name').val(), $(this).find('.type').val(), $(this).find('.size').val()));
});
基本上,“.field
”类对象是
,“.name
”、“.type
”和“.size
”对象是输入。因此,我得到一个
[名称、类型、大小]
数组,然后使用
addedFields = addedFields.join(";");
最后,我以这种方式使用PHP表单
document.location.href = "create.php?addedfields=" + addedFields;
关于PHP代码,我使用explode()
函数创建了一个PHP数组:
$addedFields = explode(";", $_GET['addedfields']);
然后我对数组中的每个元素再次使用它:
foreach ($addedFields as $field) {
$field = explode(",", $field);
echo "<li>Field with name : '$field[0]', of '$field[1]' type and with a size of $field[2]</li>";
}
foreach($addedFields作为$field){
$field=分解(“,”,$field);
echo“名称为“$Field[0]”、类型为“$Field[1]”、大小为$Field[2]”的字段;
}
所以它可以工作,但看起来很脏…将这些输入字段放在表单元素中。使用类似JSON的
var formData = $('form').serializeArray();
formData = window.JSON.stringifiy(formData);
$.post('address', {addedfields: formData}, function(){});
类似的东西应该在jQuery中实现。
在后端,将JSON转换为对象并循环。使用PHP中的自动数组功能:
var data = {};
$("#add-info .field").each(function(i) {
data['field['+i+'][name]'] = $(this).find('.name').val();
data['field['+i+'][type]'] = $(this).find('.type').val();
data['field['+i+'][size]'] = $(this).find('.size').val()]);
});
$.post("target.php", data);
然后在服务器端
var_dump($_POST['field']);
// array(
// 0 => array(
// 'name' => ...
// 'type' => ...
// 'size' => ...
// ),
// 1 => ...
编辑:稍微优雅一点的循环版本:
$("#add-info .field").each(function(i) {
for (attr in {name: 1, type: 1, size: 1}) {
data['field['+i+']['+attr+']'] = $(this).find('.'+attr).val();
}
});
试着考虑使用JSON来在PHP和JavaScript之间交互数据。
JSON内置于Javascript中,还有一个很棒的PHP库。查看它们。
window.JSON
不是跨浏览器的。真实的故事,因此一个简单的if(typeof(window.JSON)==“object”)应该会有所帮助。如果不可用,则实现javascript JSON解决方案。