Короткий ответ: jQuery не сделает это за вас. Вытащил из магазина jQuery:
// convert data if not already a string
if ( s.data && s.processData && typeof s.data !== "string" ) {
s.data = jQuery.param( s.data, s.traditional );
}
в основном, если данные не являются поступающей строкой, jQuery собирается разобрать их в одну, как вы видите Поэтому, если вы хотите, чтобы JSON отправлялся на сервер, вам придется сделать это самостоятельно. Я бы предложил не использовать JSON.stringify, поскольку он не кросс-браузерный. Вот моя функция "toJSON", если вам интересно: https://gist.github.com/884348
Вы можете всегда связываться с $ .ajax, если хотите. Я сделал это честно.