You have to give the input element a name. E.g.:
will give you in the alert box foo=2.
.serialize() takes the name and the value of the form fields and creates a string like name1=value1&name2=value2. Without a name it cannot create such a string.
Note that name is something different than id. Your form also would have not worked if you used it in the "normal" way. Every form field needs a name.