2010-11-21 15 views

Odpowiedz

14

podobne do tego, co Nick pisał, ale trochę czystsze

var dataArray = $("#myform").serializeArray(), 
    dataObj = {}; 

$(dataArray).each(function(i, field){ 
    dataObj[field.name] = field.value; 
}); 

Wtedy dostęp do tej samej drogi

alert(dataObj['title']); 
11
alert(dataArray[0].name); 
alert(dataArray[0].value); 

Więc:

for (i=0; i<dataArray.length; i += 1) { 
    if (dataArray[i].name === "title") { 
     // do something here... 
    } 
} 
+0

Dzięki, ale co, jeśli mam wiele pól wejściowych i nie chcę polegać na zamówieniu? – bart

+2

Nie polegasz na zamówieniu, w którym nazwa jest identyfikatorem, a wartość jest wartością, po prostu nie znajduje się w obiekcie takim, jaki oczekiwałeś, musisz powtórzyć całą tablicę i przetworzyć rzeczy w miarę ich napotykania . – Tom

2

Run console.log(dataArray);, następnie otworzyć Inspektora właściwości i sprawdzić konsolę. W Chrome kliknij prawym przyciskiem myszy i wybierz "Sprawdź element", a następnie kliknij ikonę "> =" w lewym dolnym rogu, druga od lewej.

W Firefoksie chcesz zainstalować Firebug i tam jest zakładka o nazwie „Konsola”

Nie wiem, czy jest ona dostępna w IE, prawdopodobnie coś w narzędziach programistycznych (naciśnij f12), ale nie polecam opracowanie w IE.

W każdym razie spowoduje to wypisanie obiektu w sposób umożliwiający nawigację i wyświetlanie wartości każdego elementu. W ten sposób można następnie wykorzystać do rozszyfrowania jak uzyskać dostęp do wartości :)

Powodzenia

23

Można pętli, as @Tom has ... lub jeśli masz dostęp więcej niż jeden, być nieco bardziej wydajny i pętla raz, tworząc obiekt tak:

var dataArray = $("#myform").serializeArray(), 
    len = dataArray.length, 
    dataObj = {}; 

for (i=0; i<len; i++) { 
    dataObj[dataArray[i].name] = dataArray[i].value; 
} 

Następnie można uzyskać do niego dostęp, jak chcesz, na przykład:

alert(dataObj['title']); //or alert(dataObj.title); 

You can test it out here .

+1

Bardzo ładne !!! Działa to bardzo ładnie, pchając go do procesora php! –

1

Dołącz/echo/print dataArray[0].name do div daje 'tytuł'

1

Alarmowanie serializeArray wejść w myDiv (uwaga: selektor :input będzie także zawierać znaczniki select i textarea!):

//alert(fData.length) // how many inputs got picked up 
var fData=$("#myDiv :input").serializeArray(); 
var msg=""; 
for(var i=0;i<fData.length;i++){ 
    var raKy=Object.keys(fData[i]); 
    msg+="\n"+raKy[0]+":"+eval("fData[i]."+raKy[0])+" "+raKy[1]+":"+eval("fData[i]."+raKy[1]); 
} 
alert(msg); 
3

Dodając to i tak, aby pomóc innym w przyszłości. Dobry sposób na szybkie sprawdzenie wszystkich wartości.

var formdata = $("#myform").serializeArray(); 
var formdata = JSON.stringify(formdata); 
alert (formdata); 
Powiązane problemy