我目前正在学习express,ajax和nodejs。所以目前我正在尝试使ajax和nodejs相互交互。我正在使用ajax向nodejs服务器发送客户端请求。目前,我可以正确调用服务器中的app.get
,即在服务器端调用console.log(req.query);
之前它可以正常工作。但是,我无法接受服务器发送的数据。客户端代码不会在我尝试进行任何返回数据时发出警报。
这是我在客户端的代码。
function login(){
var obj = '{"username":"'+$('#username').val()+'", "password":"'+$('#password').val()+'"}';
$.ajax({
type:'GET',
dataType :'json',
data:{"username": $("#username").val(),
"password": $("#password").val()},
url:'http://localhost:10351/function',
success: function (data) {
alert("ajax callaback response:"+JSON.stringify(data));
}
})
这是我在服务器端的代码。
var express = require('express');
var app = express();
var http = require("http");
var server = http.createServer();
var portNumber = 10351;
app.use(express.static('public'));
app.get('/function', function(req, res) {
console.log(req.query);
res.send(JSON.stringify(req.query));
});
app.listen(portNumber, function() {
console.log('Currently listening on port ' + portNumber);
});
任何提示?
我在以下链接中查看答案:
Node.js, Ajax sending and receiving Json
我想也许我可以使用response.end和response.setHeader代替? 我不太确定我的问题是在客户端还是服务器端。
答案 0 :(得分:1)
你不
(req.query)
你应该:
url:'http://localhost:10351/function?foo=bar
)删除stringify ex:
res.send(req.query)
alert("ajax callaback response:"+data);
response.end
方法,则不需要 res.send
,如果您想将此内容标记为json,则response.setHeader
会有所帮助,因此您可以放置{{1}标头,
或者使用Content-Type: application/json
为您完成这两件事(将json字符串化并为您添加正确的标题)
答案 1 :(得分:0)
您的端口代码不匹配。你说你的呼叫一直工作到console.log(),如果端口不匹配,它甚至不会在服务器中输入app.get()。 我想你刚刚为客户发布了不同的代码。
我建议你尝试使用chrome扩展名,这对于发送和获取ajax请求响应非常有帮助。只需更改端口号即可使用您的代码,我可以在邮递员中获得响应。