#php #javascript #arrays #post #checkbox
#php #javascript #массивы #Публикация #флажок
Вопрос:
Хорошо, я довольно озадачен, просматривая этот код более 3 часов.
Я генерирую массив флажков, например:
<?php
while($row=mysql_fetch_array($result)){
// here generate some more html...
echo '<table><tr><td><input type="checkbox" name ="ordered" onchange="checked()"/></td></tr>'
echo "</table>";
?>
У меня есть две функции js, подобные этой:
<head>
<script>
function removeDuplicateElement(arrayName){
var newArray=new Array();
label:for(var i=0; i<arrayName.length;i ){
for(var j=0; j<newArray.length;j ){
if(newArray[j]==arrayName[i])
continue label;
}
newArray[newArray.length] = arrayName[i];
}
return newArray;
}
var array = new Array();
function checked(){
var chkOrd = document.myForm.ordered;
for (i=0; i < chkOrd.length; i ){
if(chkOrd.checked){
array.push(chkOrd[i]);
//document.myForm.hid.value =chkOrd[i].value;
document.myForm.hid.value = removeDuplicateElement(array);
//alert("kliknuto je na " array[1]);
}
}
}
</script>
</head>
и когда я отправляю информацию на php с этим:
$hid = $_POST['hid'];
echo $hid;
Я всегда получаю пустой массив, как будто никакие флажки не передаются в php. Я знаю, что php отправляет только проверенные флажки, но мой массив пуст, даже если есть флажки… Я думаю, что есть некоторые проблемы с сгенерированными флажками, потому что я не могу получить даже один элемент массива флажков.
Заранее благодарю…
Комментарии:
1. аааа … если вы хотите отправить список флажков, добавьте
[]
вname
атрибут. Посмотрите, что произойдет потом.2. Я уже пробовал этот способ, но не сработал. Но в любом случае я предпочитаю делать эту часть в js и просто отправлять результат в php через скрытое поле, потому что таким образом я получаю в порядке нажатия флажков.
3. Ну, я не вижу, где вы создаете эти скрытые элементы ввода. выполнение просто
...myForm.hid.value =...
не сделает этого. Вам нужно использовать один из методов createElement, зависит от вашей библиотеки или от того, используете ли вы core JS.4. @ItayMoav могу ли я просто использовать временную переменную и объединить значение с предыдущими значениями, вставляя ‘ между элементами? А затем разделите строку, чтобы превратить ее в массив…
5. Вы определенно можете отправить все это как одно значение (объединенное( и затем обработать его на стороне сервера.