If you're run out of other ideas, you could try setting processData: false (?)... it seems like you're doing the serializing manually. If nothing else, it may give you a few clues...
Also looking at the network transfers' headers & responses in the client browser should point you to the source of problem and a fix pretty quickly (?).