因此,我要将对象数组附加到FormData
并发送带有ajax
发布请求的表单。
在我的php页面上,我可以正常访问所有表单元素(使用通常的$_POST['field_name']
),但是当我尝试访问附加的数组元素时,我遇到了一些问题。
基本上,如果我var_dump
元素(称为$_POST['dynamic_form']
),我会看到2的数组(这是正确的),但是如果我尝试循环此数组并仅回显值的最后一个元素数组被回显。
for (var i = 0; i < form_elements.length; i++) {
formData.append('dynamic_form[]', JSON.stringify(form_elements[i])); }
//THIS IS MY AJAX REQUEST
$.ajax({
type: 'POST',
url:'myurl',
data:formData,
processData: false,
contentType:false,
success: function(msg){
console.log(msg);
alert("form saved");
},
error: function(){
alert("request failed");
} });//fine ajax
//HERE MY PHP $dynamic_form = $_POST['dynamic_form']; var_dump($dynamic_form);
foreach( $dynamic_form as $form ); {echo $form;}
控制台中的var_dump
结果正确:
array(2){[0] =>字符串(59)“ {” type“:” text“,” name“:”“,” value“:” 2“,” label“:” disponibile“} “ [1] =>字符串(55)” {“ type”:“ textarea”,“ name”:“”,“ value”:“ 1”,“ label”:“ asd”}“}
,但是echo
循环内的foreach
仅显示数组的最后一个元素:
{“ type”:“ textarea”,“ name”:“”,“ value”:“ 1”,“ label”:“ asd”}
is_array($dynamic_form)
返回true(正确)
count($dynamic_form)
返回2(正确)
我尝试了for
而不是foreach
循环,但是仍然有问题..我在做什么错了?
答案 0 :(得分:0)
尽管应该将其作为一种类型关闭,但我会解释
foreach( $dynamic_form as $form ); {echo $form;}
执行为
foreach( $dynamic_form as $form ) {
// do nothing
}
// echoes last value assigned to `$form` in loop.
{echo $form;}
是的,
foreach( $dynamic_form as $form );
是绝对有效的代码(尽管我不知道为什么除非有输入错误,否则为什么会需要它)。