前言:写一个读写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});//断点可以跟踪到这里。 } }); };
这个东西折磨我两天了,一点儿头绪没有。求指导啊。
没有调用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 客户端没问题啊,我很好奇你解决了没
谈不上耽误时间,有的时候错误就是出现在这种莫名其妙的小地方想找都找不到,多写写,编码风格就自然形成了,这种错误慢慢就少了。