Javascript AJAX语法错误:在AJAX+;node.js
我正在向node.js服务器发出带有多个对象的AJAX POST请求。虽然我的服务器发送状态代码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,
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
语法无效吗?addres.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