L’impostazione di processData su false in jQuery interrompe la richiesta AJAX

Ho processData: false per un po ‘ora e posso solo trovare ciò che processData: false fa. Non riesco a trovare nessuno che abbia riscontrato questo stesso problema.

Sto passando JSON al server e non voglio che jQuery converta automaticamente i dati in una stringa di query, quindi sto impostando processData su false. Posso vedere la richiesta sparare se estrai processData, ma appena l’ho inserito non vedo nessuna richiesta (usando gli strumenti di sviluppo di Firebug e Chrome).

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

La richiesta che stavo inizialmente facendo era un po ‘più complessa di questa, ma l’ho semplificata per cercare di restringere il problema, ma questo semplice pezzo di codice non funziona (di nuovo, funziona se commento out processData). Inoltre, non vedo errori JavaScript nella console.

modificare

Per i futuri web cercatori: come sottolineato da solone, jQuery non genererà alcun errore se fornisci un object JS o una stringa JSON formattata in modo errato. Semplicemente non licenzierà la richiesta.

Vuoi passare i dati come JSON. Stai passando un object Javascript. JSON è un modo per serializzare oggetti Javascript su stringhe in modo che possano essere passati senza problemi di compatibilità.

In realtà vuoi passare il JSON in una stringa:

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

In realtà, processData presuppone per impostazione predefinita che i data passati siano un object e li invii come application/x-www-form-urlencoded .

Riassumendo tutto quanto sopra detto da @lonesomeday e @vsm per inviare JSON non elaborato ( ciò che è diverso dai dati del modulo ) è necessario:

 $.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 ... });