server 收到请求, 但是回应发不过去
发布于 2年前 作者 deerluffy 790 次浏览

前言:写一个读写mysql数据库的小练习。使用jquery 的$.post发送了一个注册用户请求,服务器收到后插入数据库。回复成功给客户端。 错误:数据库成功更新,但是回复发不过去,开始是socket hand up error.后来我装了个node v0.8.25版本,现在连错误都没有了。客户端仍然什么都收不到。

客户端你代码: var username = $(‘#username’).val().trim(); var pwd = $(‘#password’).val().trim(); $.post(‘http://myserver/’ + 'reg’, {username : username , password: pwd}, function(data){ window.alert( data); });

服务端代码:

app.get( “/reg” , route.reg); app.post( "/reg", route.doreg);

in route.js: exports.doreg = function( req ,res){ var msg = req.body;

userOperator.createUser( msg.username , msg.password , function( err , user){ if( err ){ res.send( {code: 501}); }else { res.send({ code:200, username: user.name , password: user.password});//断点可以跟踪到这里。 } }); };

这个东西折磨我两天了,一点儿头绪没有。求指导啊。

11 回复

没有调用res.end()啦

send方法会自己end的,我也试了加上res.end(),还是没有任何反应。

是不是客户端的原因啊

总共只有这几行代码:

$(document).ready( function() { $(‘#registerBtn’).on( ‘click’ , register); });

function register(){ var username = $(‘#username’).val().trim(); var pwd = $(‘#password’).val().trim(); $.post(‘http://127.0.0.1:3001/’ + 'reg’, {username : username , password: pwd}, function(data){ //window.alert( data); window.alert(“haha”); }); }

而且请求已经发过来了啊。数据库都已更新。不知道怎么回事

哥们,你客户端是异步去取的,不要res.send回去啊,res.json返回。

是这样吗? res.json( 200,{username: user.name , password: user.password}); 还是不行。啊

@deerluffy 看express文档啊亲,res.json参数是一个对象啊

res.json({ a: xxx, b: xxx })

@Turing 文档中有三种形式,我都试了不行,您觉得我客户端写得对吗?

@deerluffy 客户端没问题啊,我很好奇你解决了没

谢谢两位的帮助@Turing@dengqiao,客户端是用了一个button,没有设置属性,默认submit了。改成input后就行了。 但是还是有个问题,默认submit提交表单,但是我在客户端调试时,还是能进入我写的那个register方法。我觉得很奇怪。 前端做的很少,新手伤不起,耽误了两位时间,非常感谢。

谈不上耽误时间,有的时候错误就是出现在这种莫名其妙的小地方想找都找不到,多写写,编码风格就自然形成了,这种错误慢慢就少了。

回到顶部