Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery ajax JSON错误解析_Jquery_Ajax_Json_Node.js_Parse Error - Fatal编程技术网

jQuery ajax 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,

我有一个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,//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现在我知道数据类型的含义了。。。我在这个地区是绿色的,但逐渐变少了。