Javascript AJAX语法错误:在AJAX+;node.js

Javascript AJAX语法错误:在AJAX+;node.js,javascript,ajax,Javascript,Ajax,我正在向node.js服务器发出带有多个对象的AJAX POST请求。虽然我的服务器发送状态代码200,但我仍然收到错误Javascript-AJAX-SyntaxError:JSON中的意外标记E位于位置0。以下是我的发帖请求: var company_id = "some_generic_id"; var president = "obama"; var postData = { company_id : company_id,

我正在向node.js服务器发出带有多个对象的AJAX POST请求。虽然我的服务器发送状态代码
200
,但我仍然收到错误
Javascript-AJAX-SyntaxError:JSON中的意外标记E位于位置0
。以下是我的发帖请求:

     var company_id = "some_generic_id";
     var president  = "obama";

     var postData = {
       company_id   : company_id,
       president    : president
     };


     $.ajax({
       type: "POST",
       url: '/api/test_link',
       data: JSON.stringify(postData),
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       data: postData,
       success: function(data, status) {
         console.log('it worked!')
       },
       error: function(request, status, error) {
         console.log(request);
         console.log(status);
         console.log(error);
       }
     });
这是我的服务器端代码:

app.post('/api/test_link', function(req, res) {

            console.log('--post data--');
            console.log(req.body);
            /*
                prints out:
                --post data--
                { company_id: 'company_id', president: 'obama' }

            */  
            res.sendStatus(200);

    });
以下是“我的网络”选项卡中的图像:

有人知道我可能缺少什么,或者为什么我的
postData
语法无效吗?

add
res.writeHead(200,{“Content Type”:“application/json”})
在app.post('/api/test_link',function(req,res){的开头,指定您希望响应为json格式

删除你的

res.sendStatus(200);
由于
res.writeHead(200,{'Content-Type':'application/json'});
也将设置您的状态码

所以是这样的

app.post('/api/test_link', function(req, res) {

            res.writeHead(200, {'Content-Type': 'application/json'});
            console.log('--post data--');
            console.log(req.body);
            /*
                prints out:
                --post data--
                { company_id: 'company_id', president: 'obama' }

            */  
            res.send();

    });
关于ajax调用的状态是关于
数据类型
选项:

您期望从服务器返回的数据类型。“json”: 将响应计算为JSON并返回一个JavaScript对象


由于您没有从服务器返回任何数据,因此空数据被解析为JSON,这会产生错误。如果您没有返回任何数据,只需删除
dataType:“JSON”

如果我没有使用
JSON.stringify()

$.post(url,body,res=>{…});
//错误:{消息:“JSON中位于位置0的意外令牌e”}
$.post(url,JSON.stringify(body),res=>{…});

检查您的网络响应,看看结果如何?我的网络响应的状态是200。但由于它返回了200,这不意味着AJAX请求成功(而不是错误)?它是否在您的网络响应中显示了json对象?请检查我是否看到它的显示,但不是以内容类型:application/json格式查看我的答案below@Maximus我明白了,我没有意识到我以为他想要返回一些东西/他正在返回一些东西,因为在他的帖子中他放了一个json对象示例,问题是不够详细。嗨-我尝试了
res.send({status:200})
,这似乎很有效……您能举一个例子说明我应该在哪里添加
res.writeHead(200,{“Content Type”:“application/json”};
?他指定了
数据类型:“json”
,因此不管返回的mime类型如何,响应都将被解析为json