如题,客户端发起异步请求,如何在服务端处理返回给它JSON呢, 下面是客户端示例代码: $.ajax({ url: ‘/ajaxTest’, type: ‘GET’, success: function(data){ console.log(‘success!’) console.log(data.toString()); }, error: function(xmlHTTPRequest, status, error){ console.log(status); alert(‘cuowu!’); } })
服务端示例:
// 这里getUserList是去异步查数据库了
exports.ajax = function(req, res, next){
getUserList(function(err, users){
if(err) return next(err);
return users;
});
});
到这里,用Firebug监听请求localhost:3000/ajaxTest,发现请求状态一直是转圈圈,很久时间之后,就显示请求失败了,服务端控制台也没打印出什么,不知道服务端这样处理对不对,
PS:我这是本地测试的,localhost,是本地测试异步请求有问题吗?还是必须放服务器上测试才行呢
补充一点:服务端的getUserList方法是经过测试,能正常返回数据的
刚刚在回调里加了个render试了下,竟然请求成功了! 好了,只剩最后一个问题,如何返回JSON给客户端呢,render貌似只能是字符串?
服务器端试试, JSON.parse(str);返回相应对象。或者就传递,json格式的字符串,然后前端页面,用eval(’(’+data+’)’)解析成json对象。
嗯,JSON.parse传的字符串格式很严格,必须是名值对都用双引号包起来,否则会解析出错!后来用JSON.stringify在服务端序列后回传,发现到了客户端会转义! 服务端JSON[{“pass”:“111”,“name”:“e45”,"_id":“5152d48a60b39f5418000001”}, 传给客户端之后竟然 成了 [{“pass”:“111”,“name”:"e45" 坑啊~(╯_╰) ,不得已只能在ajax回调里对字符串用正则替换之后, 才算正常了。
可以使用 res.json({users: users});
@alvis 就是它!心想node如此强大,怎会没有返回JSON的方法,兄弟多谢