我正在创建一个弹出对话框,我需要以隐藏格式放置一组值,但是当我在AJAX帖子中获取值时,我只得到最后一个值。
这是PHP部分:
$plan_ids=array();
foreach($test_plan as $plan)
{
$plan_ids[]=$plan['plan_id'];
}
?>
<?php
foreach($plan_ids as $id)
{
echo "<input type='hidden' id='plan_id' value='$id'>";
}
//var_dump($plan_ids);
// echo $plan['plan_id'];
?>
在我正在做的AJAX部分:
$("#save").click(function () {
var name = $('#name').val();
var id = $('#release_id').val();
var plan_id = $('#plan_id').val();
//alert('hello');
$.ajax({
type: 'POST',
url: '/api/api.php?action=put_iteration&name=' + name + '&id=' + id + '&plan_id=' + plan_id,
data: "name=" + name + "&id=" + id + "&plan_id=" + plan_id,
success: function () {
$('#save').hide(function () {
$('div.success').fadeIn();
});
}
});
});
我对HTML隐藏字段一无所知。
答案 0 :(得分:2)
不是一个PHP家伙,但有些想法。请原谅我的语法错误。
在循环中您正在创建具有相同ID的隐藏元素。这是不好的。更改Id的代码(应该始终是唯一的)。
<div>
foreach($plan_ids as $id)
{
echo "<input type='hidden' id='plan-$id' value='$id' class='myHidden'>";
}
现在在您的脚本中,使用基于隐藏项
的jQuery选择器var hiddenItems = $(“input [type ='hidden']”);
现在可以通过这个循环
var items
$.each(hiddenItems,function(item,index){
items+= hiddenItems[index];
});
或者你可以map
这样运作,这样它就会给出一个逗号分隔的隐藏字段值列表。
var itemsJoined=$("input[type='hidden']").map(function () {
return this.value;
}).get().join(',');
答案 1 :(得分:1)
我认为您希望将id='plan_id'
更改为name='plan_id[]'
作为开始....您只能拥有一个具有给定ID的元素(即,要求ID在元素中是唯一的给定页面。)
答案 2 :(得分:1)
您可以将所有隐藏字段命名为数组name="plan_id[]"
而不是将其作为字符串传递,您可以在隐藏字段周围使用包装FORM,然后使用jquery serialize function发布它
现在,您将在POST变量
中以数组的形式获取所有plan_id添加示例
<?php
echo '<form name="planidform" id="planidform">';
foreach($plan_ids as $id)
{
echo "<input type='hidden' name="plan_id[]" value='$id'>";
}
echo '</form>';
?>
在jQuery之后以下列方式执行:
data: "name=" + name + "&id=" + id + "&"+$("#planidform").serialize(),
答案 3 :(得分:1)
您应该为隐藏字段添加不同的名称/ ID。 如果你想立刻提交它们,你可以将它们存储在一个数组中。 例如:
$i=0;
foreach($plan_ids as $id){
$i++;
echo "<input type='hidden' id='plan_id_$i' value='$id'>";}
然后你可以在JS中解决或分组它们。