如何在客户端向javascript发送obect? 我之前问了一个问题并得到了回答并接受了这个问题,因为我无法在计算机上查看答案: Client receive json object to javascript
我仍然不明白如何将数据发送到我尝试req.send / render的客户端,并且它没有在客户端运行。
客户端:
$.get('127.0.0.1:3000', {mydata: 'content'}, function(response){
//callback triggered when server responds
console.log(JSON.stringify(response));
});
服务器:
app.get('/', function (req, res) {
if(req.params.mydata === 'content'){
res.end("you sent content");
} else {
res.end("you sent something else");
}
});
谢谢!
答案 0 :(得分:2)
您希望使用res.end
而不是使用res.json
- 这将适当地设置HTTP Content-Type标头,以便您的数据实际上作为JSON传递。这是一个示例路线:
app.get('/', function(req, res) {
if (req.params.mydata === 'content') {
res.json({ message: 'you sent content' });
} else {
res.json({ message: 'you sent something else' });
}
});
希望有所帮助!
答案 1 :(得分:2)
app.get('/', function (req, res) {
req.params.mydata === 'content'
? res.send("you sent content")
: res.send("you sent something else");
});
答案 2 :(得分:0)
在您的服务器代码中,执行以下操作:
req.params.mydata
,你试图从你的一条路线中映射的属性中获取mydata
,如:
'http://127.0.0.1:1337/:mydata'
这不是你的情况。您通过查询字符串发送对象{mydata: 'content'}
,例如:
'http://127.0.0.1:1337/?mydata=content'
因此,要在服务器代码上获取此数据,您必须执行以下操作:
if (req.query.mydata === 'content') {
// do something
}
甚至
if (req.param('mydata) === 'content') {
// do something
}
有关如何处理接收数据的更多信息,请查看express.js Request docs。
正如@rdegges所指出的,如果您要发送json
数据,则应使用res.json
代替res.end
。但是,在您的情况下,由于您是从客户端提出请求并且No 'Access-Control-Allow-Origin'
(您在评论中说过),您有两种选择:
jsonp
响应,而不仅仅是json
,例如res.jsonp({ message: 'you sent content' });
如果您选择第二个选项,则应准备好客户端代码以处理此问题,并添加dataType: 'jsonp'
:
$.ajax({
url: 'http://127.0.0.1:1337/',
data: {
mydata: "content"
},
dataType: 'jsonp',
success: function (json) {
console.log(json);
},
error: function (jqXHR, error, errorThrown) {
console.log(error);
},
type: 'GET'
});