Configurar processData en falso en jQuery rompe mi solicitud AJAX

He buscado en Google por un tiempo y solo puedo encontrar lo que processData: false hace. No puedo encontrar a nadie que haya experimentado este mismo problema.

Estoy devolviendo JSON al servidor y no quiero que jQuery convierta automáticamente los datos en una cadena de consulta, por lo que estoy configurando processData en falso. Puedo ver que la solicitud se active si elimino processData, pero tan pronto como lo instalo no veo ninguna solicitud (usando las herramientas de desarrollo de Firebug y Chrome).

 $.ajax({ url: myUrl, type: "POST", data: {foo: "bar"}, processData: false, contentType: 'application/json' }); 

La solicitud que estaba haciendo inicialmente era un poco más compleja que esto, pero la simplifiqué para tratar de reducir el problema, pero esta simple pieza de código tampoco funciona (de nuevo, funciona si hago un comentario de processData). Además, no veo ningún error de JavaScript en la consola.

Editar

Para futuros buscadores web: como señaló un día, jQuery no arrojará ningún error si proporciona un objeto JS o una cadena JSON formateada incorrectamente. Simplemente no lanzará la solicitud.

Desea pasar los datos como JSON. Estás pasando un objeto Javascript. JSON es una forma de serializar objetos de Javascript en cadenas para que puedan transmitirse sin problemas de compatibilidad.

De hecho, desea pasar el JSON en una cadena:

 $.ajax({ url: myUrl, type: "POST", data: '{"foo": "bar"}', processData: false, contentType: 'application/json' }); 

En realidad, processData asume por defecto que los data pasados ​​son un objeto y lo envía como application/x-www-form-urlencoded .

Resumiendo todo lo dicho anteriormente por @lonesomeday y @vsm para enviar JSON sin formato ( lo que es diferente de los datos del formulario ), necesita:

 $.ajax({ url: 'http://here-i.am/send-me/an/angel', // Determining far end data: JSON.stringify({foo: "bar"}), // Obtaining proper JSON string from data object processData: false, // Preventing default data parse behavior contentType: "application/json" // Setting proper `ContentType` for our data ... });