Autor Zpráva
http
Profil
<p>
<input name="kat_news_new[1]" value="1" id="kat1" type="checkbox"><label for="kat1">Novinky</label><br>
<input name="kat_news_new[2]" value="2" id="kat2" type="checkbox"><label for="kat2">Stařinky</label><br>
<input name="kat_news_new[3]" value="3" id="kat3" type="checkbox"><label for="kat3">Duel</label><br>
<input name="kat_news_new[4]" value="4" id="kat4" type="checkbox"><label for="kat4">Časopisy</label><br>
</p>


odesílám form ajaxem POST, ale vůbec mi nejde odeslat checkbox jako pole:

zkoušel jsem

var pocet = 4;
var pole = new Array();
for (i = 1; i < pocet; i++){

  if (document.getElementById("kat" + i).checked == true){
  pole += i;
  }

}


když si pak vypíšu pole výsledkem je 123, podle toho jaký checkbox je zaškrtnutý, ale to není prostě pole.

Jak vytvořit pole se zaštkrtnuchých checkboxu a odeslat ho ajaxem přes POST, všchno ostatní mi jede. Já pak v PHP to pole procházím:

foreach ($kat_news_new as $value){
		$sql_key_kat_news = "INSERT INTO $tab_key_kat_news (key_news, key_kat) 
		VALUES ($id_news, $value)";
		..................................

a ukládám do tabulky...
Díky za jakoukoliv radu
Pavel
Taps
Profil
http:
zkoušel jsi ?
<input name="kat_news_new[]" value="1" id="kat1" type="checkbox"><label for="kat1">Novinky</label><br>
<input name="kat_news_new[]" value="2" id="kat2" type="checkbox"><label for="kat2">Stařinky</label><br>
<input name="kat_news_new[]" value="3" id="kat3" type="checkbox"><label for="kat3">Duel</label><br>
<input name="kat_news_new[]" value="4" id="kat4" type="checkbox"><label for="kat4">Časopisy</label><br>
http
Profil
Taps:
odeslání přes button stále funguje, ale přes ajax se stále nic nezměnilo, vždyt je tam getElementById, tak si mylsím že name na to nebude mít vliv :(
Chamurappi
Profil
Reaguji na httpa:
pole += i;
Jak jsi na tohle přišel? Neznám žádný programovací jazyk, kde by se prvek do pole přidával takovýmto způsobem. Asi bys chtěl použít spíš metodu push:
pole.push(i);
http
Profil
Chamurappi:
nevím, někde jsem si to přečetl :-D ted už to jako pole vypadá, ale

při sestavení řetězce:
var retezec = "?script_news=" + script_news + "&name_news=" + name_news + "&text_news=" + text_news +"&id_news=" + id_news + "&id_lang=" + id_lang + "&start_news=" + start_news + "&exp_news=" + exp_news + "&kat_news_new=" + pole + "&edit=" + ind;


mi to stejně nic neodešle, co tam mám napsat, nějak mi to furt uniká...
Chamurappi
Profil
Reaguji na httpa:
mi to stejně nic neodešle
Odešle to asi hodnoty pole oddělené čárkami. Server s tím nepočítá? Tak mu pošli to, s čím počítá.

Pokud bez JS odešleš nahoře uvedený kód při zaškrtnutí prvního a třetího zaškrtávátka, putuje na server toto:
kat_news_new[1]=1&kat_news_new[3]=3
Zatímco tvůj kód pošle:
kat_news_new=1,3
http
Profil
tak už to jede, řešení:

for (i = 1; i < pocet; i++){
if (document.getElementById("kat" + i).checked == true){
	kat_news_new += "kat_news_new["+i+"]="+i+"&";
	}
}
var retezec = "?script_news=" + script_news + "&name_news=" + name_news + "&text_news=" + text_news +"&id_news=" + id_news + "&id_lang=" + id_lang + "&start_news=" + start_news + "&exp_news=" + exp_news + "&" + kat_news_new + "&edit=" + ind;


odeslaný výsledek:
?script_news=aktualita-na-prd&name_news=Aktualita na prd&text_news=xxx&id_news=4&id_lang=1&start_news=2009-11-05 15:41:11&exp_news=2009-12-31 23:59:59&kat_news_new[1]=1&kat_news_new[4]=4&&edit=2

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: