jQuery ajax JSON错误解析
我有一个JSON对象,我正试图发送到节点服务器。我用这个: 发出请求的通用函数:jQuery ajax JSON错误解析,jquery,ajax,json,node.js,parse-error,Jquery,Ajax,Json,Node.js,Parse Error,我有一个JSON对象,我正试图发送到节点服务器。我用这个: 发出请求的通用函数: function makeTheRequest(method, url, data, dataType, onSuccess, onError, onComplete) { jQuery.ajax({ method: method,//metodo|verbo con el que procesamos la peticion url: server + '/' + url,
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
});
}
具体函数,其中我调用泛型:
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.");
});
我发现的问题和很多人的问题是一样的,我可以在这个论坛上读到这个问题,但是没有一个答案可以解决我的问题。。。也许我不太了解他们
最后,我找到了一个解决办法。。。我认为这很好,因为我们可以在服务器上支持json和文本请求数据类型,但我知道如何使用jquery执行json ajax请求
我的解决方案
也许不是最好的。。。但它是我的,我喜欢它;更改调用另一行的通用函数的行:
makeTheRequest('POST', 'users', "user=" + JSON.stringify(user) , 'text', onSuccessSignLog, onErrorSignLog);
在服务器端:
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);
});
我是这么说的,我认为这还不错,因为服务器更灵活,但我已经花了很长时间尝试发出json ajax请求。。。我想找到解决办法
我的英语不是最好的。。。对不起 你想回答你自己的问题吗?如果是这样,请提供答案作为答案,不要把它放在你的问题中。另外,。我不理解这个问题。为什么您认为您正在发送JSON格式的“user=+user”?将数据类型设置为json并不意味着以json格式发布数据,而是意味着从服务器返回的响应是json格式的。但这意味着您从服务器返回的响应是JSON格式的,但这意味着您希望从服务器返回的响应是JSON格式的。非常感谢各位。。。你睁开我的眼睛。我混淆了左和右,我认为JSON.parse用于构建JSON对象序列化,而JSON.stringfy用于将其转换为字符串,因为Ben Alman说感谢@FelixKling I我没有区分JSON对象和javascript本机对象。谢谢@Barry becouse现在我知道数据类型的含义了。。。我在这个地区是绿色的,但逐渐变少了。