Estoy seguro de que me estoy perdiendo algo simple, pero hasta ahora estoy luchando por ver qué...
Quiero PUBLICAR algunas entradas de campos de formulario en un servidor en formato JSON. Actualmente estoy usando:
$(document).ready(function () { $("#newEnquiery").submit(function (event) { event.preventDefault(); $.ajax({ url: 'SERVER-URL-HERE', type: 'POST', data: JSON.stringify({ "name": $('#name').val(), "emailAddress" : $('#emailAddress').val(), "address" : $('#address').val() }), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function(data, textStatus, jQxhr){ console.log('Sent'); }, error: function( jqXhr, textStatus, errorThrown ){ console.log('fail'); console.log(errorThrown); } }); }); });El error que me muestra en la consola es; SyntaxError: final inesperado de la entrada JSON
$.ajax({ url: "https://jsonplaceholder.typicode.com/posts", type: "POST", data: JSON.stringify({ name: "test", emailAddress: "test", address: "test", }), contentType: "application/json", dataType: "json", success: function (data, textStatus, jQxhr) { console.log(data); }, error: function (jqXhr, textStatus, errorThrown) { console.log("fail"); console.log(errorThrown); }, }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>contentType tiene que ser application/json y debe pasar un json simple al método JSON.stringify en el atributo de datos. Entonces el código tiene que ser:
$(document).ready(function () { $("#newEnquiery").submit(function (event) { event.preventDefault(); $.ajax({ url: 'SERVER-URL-HERE', type: 'POST', data: JSON.stringify({ name: $('#name').val(), emailAddress : $('#emailAddress').val(), address : $('#address').val() }), contentType: 'application/json', dataType: 'json', success: function(data, textStatus, jQxhr){ console.log('Sent'); }, error: function( jqXhr, textStatus, errorThrown ){ console.log('fail'); console.log(errorThrown); } }); }); });