I have a JSON object that I was trying to send to a node server. I use this:
Generic function to make a request:
function makeTheRequest(method, url, data, dataType, onSuccess, onError, onComplete)
{
jQuery.ajax({
method: method,//metodo|verbo con el que procesamos la peticion
url: server + '/' + url,//url a la que hacemos la petición
data: data,//datos del formulario
dataType: dataType,
success: onSuccess,
error: onError,
complete: onComplete
});
}
Concrete function where I call the generic:
jQuery('#sign_log_button').on('click', function()
{
var user = {};
var fields = true;
jQuery('.data').each(function(index)
{
if(jQuery(this).val())
user[jQuery(this).attr('id')]=jQuery(this).val();
else fields = false;
});
console.log(JSON.stringify(user));
if(fields)
{
makeTheRequest('POST', 'users', "user=" + user , 'json', onSuccessSignLog, onErrorSignLog);
}
else alert("Please, check all fields.");
});
The problem I am finding is the same that many people has (I could read this problem on this forum, but no one answer is fixing me the problem... maybe I am not understanding well them).
Finally, I find a solution... and I think is great (becouse can support json and text request dataType on the server), but I would know how to do the json ajax request with jquery.
My Solution
(maybe is not the best... but it is mine, and I like it ;) ) Change the line where make the calling to the generic function for this other line:
makeTheRequest('POST', 'users', "user=" + JSON.stringify(user) , 'text', onSuccessSignLog, onErrorSignLog);
And on the server side this:
router.post('/', function(req, res)
{
user = req.body.user;
if(typeof user === "string") user = JSON.parse(user);
//MORE AND MORE
res.send(user.user_name);
});
How I said, I think it is not bad becouse the server is more flexible, but I had been a long time trying to make a json ajax request... and I want to find the solution.
PS: My english is not the best... excuse me!!