Javascript&;Node.js-发出JSON请求
在本文中,我了解到在node.js中,您可以区分html请求和json请求,如下所示:Javascript&;Node.js-发出JSON请求,javascript,jquery,json,node.js,Javascript,Jquery,Json,Node.js,在本文中,我了解到在node.js中,您可以区分html请求和json请求,如下所示: app.get('/route', function (req, res) { if (req.is('json')) res.json(data); else if (req.is('html')) res.render('view', {}); else ... }); 现在我的问题是,如何在节点服务器中发出解释为json的请求? 因为我试过使用$.ajax和$.getJson,
app.get('/route', function (req, res) {
if (req.is('json')) res.json(data);
else if (req.is('html')) res.render('view', {});
else ...
});
现在我的问题是,如何在节点服务器中发出解释为json的请求?因为我试过使用$.ajax和$.getJson,并在浏览器中键入,所有这些都是html请求。
这是我的要求
$.ajax({ type: 'GET', url: "/test", dataType:"json", success: function(data){log(data)}})
尝试设置
contentType
参数
$.ajax({
type: 'GET',
url: 'your_url',
data: {
test: "test"
},
contentType: "application/json; charset=utf-8",
dataType: "json",
....
});
编辑:
您可以使用
你所要做的就是
var request = require('request');
var options = {
uri: 'your_server_side_url',
method: 'POST',
json: {
"data": "some_data"
}
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body.id) // Print the shortened url.
}
});
查看github链接。可能模块会让您的生活更轻松尝试设置
contentType
参数
$.ajax({
type: 'GET',
url: 'your_url',
data: {
test: "test"
},
contentType: "application/json; charset=utf-8",
dataType: "json",
....
});
编辑:
您可以使用
你所要做的就是
var request = require('request');
var options = {
uri: 'your_server_side_url',
method: 'POST',
json: {
"data": "some_data"
}
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body.id) // Print the shortened url.
}
});
查看github链接。可能是该模块将使您的生活更轻松该方法通过检查内容类型
标题来检查传入请求类型,因此您需要确保在发送请求之前在请求中设置该标题,例如
$.ajax({
type: 'GET',
url: '/route',
contentType: "application/json; charset=utf-8",
....
});
但是,标头用于确定请求正文的格式,而不是响应。建议您使用标题来通知服务器什么类型的格式适合响应,例如
app.get('/route', function (req, res) {
if (req.accepts('html')) {
res.render('view', {});
} else if (req.accepts('json')) {
res.json(data);
} else {
...
}
});
然后在客户机上,您不需要担心内容头
,而是接受
头,jQuery已经为此提供了一些方便的方法
该方法通过检查内容类型
标头来检查传入的请求类型,因此您需要确保在发送请求之前在请求中设置此标头,例如
$.ajax({
type: 'GET',
url: '/route',
contentType: "application/json; charset=utf-8",
....
});
但是,标头用于确定请求正文的格式,而不是响应。建议您使用标题来通知服务器什么类型的格式适合响应,例如
app.get('/route', function (req, res) {
if (req.accepts('html')) {
res.render('view', {});
} else if (req.accepts('json')) {
res.json(data);
} else {
...
}
});
然后在客户机上,您不需要担心内容头
,而是接受
头,jQuery已经为此提供了一些方便的方法
您在ajax调用中设置了datatype=json吗?是的,我在ajax调用中设置了datatype=json,但没有任何差异吗?是的,我在客户端中不需要结果,我检查服务器如何查看请求。首先,您必须确保ajax请求已正确发送到服务器请求已发送到服务器,因为我可以记录请求。我没有收到任何错误,请求应为“json”类型,但始终为“html”类型即使有contentType和所有内容,你的答案也不是我想要的,但你可以投票。我不需要客户端的结果,我会检查服务器是如何看到请求的。首先,你必须确保ajax请求正确发送到服务器请求发送到服务器很好,因为我可以记录请求。我没有收到任何错误,请求应该是“json”类型,但它始终是“html”类型,即使有contentType和所有内容。您的答案不是我想要的,但您无论如何都会获得投票。谢谢,这确实有效,但当我在broswer中输入url时(不是$.ajax)它仍然以json的形式接受请求,这不应该是html吗?@user3425760您可能会发现浏览器告诉服务器它可以接受json和html响应。你可以更新你的
get
方法来优先考虑HTML而不是JSON,我已经更新了我的答案来演示这一点。谢谢,这确实有效,但是当我在broswer(不是$.ajax)中输入url时,它仍然接受作为JSON的请求,这不是应该是html吗?@user3425760您可能会发现浏览器告诉服务器它可以接受JSON和html响应。您可以更新您的get
方法,使HTML优先于JSON,我已经更新了我的答案来演示这一点。