Avatar billede kryderbolle Nybegynder
07. december 2010 - 16:23 Der er 10 kommentarer og
1 løsning

Jquery ajax med checkbox data

Jeg er så småt begyndt at bruge jquery til mange ting, fordi det er dejlig nemt at arbejde med. Og nu skal jeg altså sende noget information til serveren via ajax, og det kan jquery jo også.

Mit problem består i at jeg har en masse felter på siden (er lavet i asp.net), og jeg skal kun sende 3 checkbox grupper. Jeg kunne ellers bruge $("form").serialize(), men det vil give mig en masse spild data, som jeg gerne vil undgå.

Nedkogt er min kode (html) noget ala:
<input type="checkbox" name="gruppe1" value="1">val 1<br>
<input type="checkbox" name="gruppe1" value="2">val 2<br>
<input type="checkbox" name="gruppe1" value="3">val 3<br>
<br>
<input type="checkbox" name="gruppe2" value="1">val 1<br>
<input type="checkbox" name="gruppe2" value="2">val 2<br>
<input type="checkbox" name="gruppe2" value="3">val 3<br>
<br>
<input type="checkbox" name="gruppe3" value="1">val 1<br>
<input type="checkbox" name="gruppe3" value="2">val 2<br>
<input type="checkbox" name="gruppe3" value="3">val 3<br>
<input type="button" onclick="sendData()" value="send">

Og min js noget ala:
function sendData()
{
  $.ajax({
    url: 'ajaxData.aspx',
    type: "POST",
    data: ???,
    success: function (data) {
      alert("data send")
    }
  });
}

Mit spørgsmål er, hvad skal jeg skrive for at få mine valgte checkbox værdier ind i data, så jeg kan hente dem ud med Request.Form["gruppe1"]?

En ekstra detalje er at navnene på checkbox'ene er noget meget langt noget (fra .net), så jeg kunne også godt tænke mig at "omdøbe" værdierne når de sendes. For at bruge det tidlige eks. ville jeg gerne have sendt de afkrydsede værdier i "gruppe1" checkboxene som "g1" i stedet. Så det blev noget ala:

data: [g1=??, g2=??, g3=??],
Avatar billede coderdk Praktikant
07. december 2010 - 16:27 #1
De skal nok hedde gruppe1[], gruppe2[] osv - Så kommer der et array
Avatar billede bkp Nybegynder
07. december 2010 - 16:33 #2
Indeholder din form mange objekter som du ikke vil sende siden du ikke vil bruge serialize?

Husk at serialize konverterer til JSON som faktisk er rimelig kompakt format i sammenligning med f.eks. xml.
Avatar billede kryderbolle Nybegynder
07. december 2010 - 16:39 #3
coder >>
Mig bekendt er det fuldstændig lige meget om de hedder "navn" eller "navn[]". Data ligger alligevel som et array.

jeg kan stadig lave en
var mitArr = document.getElementsByName("gruppe1")
for(f=0;f<mitArr.length;f++)
{
  ...
}

Men nu ville jeg gerne bruge jquery da det kan give en masse med en line kode. F.eks. kunne jeg skrive:
$("input[name='gruppe1']").serialize()

Men jeg skal have 3 checkbox grupper, og jeg ville gerne omdøbe dem, da deres rigtige navn faktisk er "checkbox_ctl00$ContentPlaceHolder1$CheckBoxList1" hvilket er total usigende på min modtager side. Hvor det havde været nemmer hvis de var omdøbt til "team", "type" og "status" som faktisk er det data de indeholder.
Avatar billede kryderbolle Nybegynder
07. december 2010 - 16:42 #4
bkb >
Ikke vildt mange (men dog nogen). Men man ved aldrig med fremtiden. Og kender jeg min chef ret, så kommer der flere felter.

Men jo, jeg bruger serialize metoden lige nu så længe jeg udvikler. Men jeg ville rigtig gerne undgå det og få omdøbt mine sendte værdier da navnere er meget intetsigende (da de kommer fra .net).
Avatar billede coderdk Praktikant
07. december 2010 - 16:43 #5
Du har ret, jeg tænkte også mere på modtagersiden - Der skal de helst hedde noget med [] - men hvorfor kigger du ikke på serialize eller param i jquery - Du kan evt give dem en klasse som f.eks. "chkbox" og så lave en $(".chbox").serialize() ?
Avatar billede bkp Nybegynder
07. december 2010 - 16:47 #6
Du kan jo give de checbokse en class="formdata" og nøjes med at serialize dem:

$('.formdata').serialize();

Få flere ideer her:
http://stackoverflow.com/questions/608730/how-do-i-use-jquerys-form-serialize-but-exclude-empty-fields
Avatar billede bkp Nybegynder
07. december 2010 - 16:48 #7
Coderdk ->  He he, samme tanke :-)
Avatar billede kryderbolle Nybegynder
08. december 2010 - 08:37 #8
Jeg har sat en class som jeg bruger med serialize. Derefter laver jeg 3 replace så jeg kan omdøbe navnene til noget mere sigende.

Point må gå til coderdk.
Avatar billede kryderbolle Nybegynder
22. december 2010 - 08:06 #9
coderdk. Får du lagt et svar?
Avatar billede kryderbolle Nybegynder
22. marts 2011 - 07:58 #10
Venter stadig på et svar :)
Avatar billede kryderbolle Nybegynder
29. november 2011 - 13:16 #11
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester