jquery formato AJAX y json

Tengo un servicio web que espera recibir json, así:

{"first_name":"test","last_name":"teste","email":"moi@someplace.com","mobile":"+44 22 2222 2222", "password":"testing"} 

Mi llamada ajax en jquery:

 $.ajax({ type: "POST", url: hb_base_url + "consumer", contentType: "application/json", dataType: "json", data: { first_name: $("#namec").val(), last_name: $("#surnamec").val(), email: $("#emailc").val(), mobile: $("#numberc").val(), password: $("#passwordc").val() }, success: function(response) { console.log(response); }, error: function(response) { console.log(response); } }); 

¿Hay alguna manera de verificar el formato en el que se envían mis datos? Supuestamente no estoy enviando el JSON correcto al servidor (ese es el primer paso en la validación).

¿Mi código jquery envía JSON válido o me perdí algo?

En realidad, no está enviando JSON. Usted está pasando un objeto como data , pero necesita realizar una cadena del objeto y pasar la cadena en su lugar.

Su dataType: "json" solo le dice a jQuery que quiere que analice el JSON devuelto, pero esto no significa que jQuery automáticamente codificará los datos de su solicitud.

Cambiar a:

 $.ajax({ type: "POST", url: hb_base_url + "consumer", contentType: "application/json", dataType: "json", data: JSON.stringify({ first_name: $("#namec").val(), last_name: $("#surnamec").val(), email: $("#emailc").val(), mobile: $("#numberc").val(), password: $("#passwordc").val() }), success: function(response) { console.log(response); }, error: function(response) { console.log(response); } }); 

Nunca tuve suerte con ese enfoque. Siempre hago esto (espero que esto ayude):

 var obj = {}; obj.first_name = $("#namec").val(); obj.last_name = $("#surnamec").val(); obj.email = $("#emailc").val(); obj.mobile = $("#numberc").val(); obj.password = $("#passwordc").val(); 

Entonces en tu ajax:

 $.ajax({ type: "POST", url: hb_base_url + "consumer", contentType: "application/json", dataType: "json", data: JSON.stringify(obj), success: function(response) { console.log(response); }, error: function(response) { console.log(response); } }); 

Actualmente está enviando los datos como valores POST típicos, que se ven así:

 first_name=somename&last_name=somesurname 

Si desea enviar datos como json, necesita crear un objeto con datos y escribirlos en una cadena.

 data: JSON.stringify(someobject)