ajax和nodejs
发布于 11 年前 作者 sunuxreg 13961 次浏览 最后一次编辑是 8 年前

我想是想用ajax提交微博的功能,逻辑是这样的: 数据post到nodejs服务端后先检查用户时候登陆,如果没登陆就用 res.render(“login”);

跳转到登陆页面,这个逻辑在用form表单提交时是正常的,但是如果用jQuery的$.ajax函数提交,res.render(“login”);就不会转到登陆页面,而且下面的程序也不执行,对应的ajax代码如下: $.ajax({ type: “POST”, url: “http://127.0.0.1:3000/pub”, data:sendWb, success:function(data) {alert(JSON.stringify(data))}, dataType: “JSON” }); 在nodejs处可以获取到post 来的信息,说明ajax语句没问题,但是为什么就不能跳转呢?是不是form表单提交和ajax的post在连接方面有区别?

6 回复

ajax 是用来传递数据的。客户端需要根据情况,进行跳转:

window.location = url;

情况判断的语句在nodejs中。我还是不太明白你的意思,是不是说用了ajax就不能用用res.render或res,redirect跳转了? window.location = url;这个语句写在什么位置?起什么作用?谢谢。

@sunuxreg ajax 是在当前网页和后台交换数据。不能用res.render或res,redirect跳转。

window.location = url;这个语句写在ajax的回调函数里。根据后台返回的数据,判断用户登陆与否。对没登陆的用户,用这个语句跳转到登陆页面。

@leapon 哦,意思我懂了,但是这样会不会很危险。比如如果用户没登陆,我返回"not login",然后判断if(data==“not login”) {windows.location="/login} else{do sth}如果用户在浏览器端篡改脚本,比如改成断if(data!=“not login”)。岂不是在没有登录的情况下也能进行操作?

@sunuxreg 可以在初始渲染的时候,在DOM节点上加一个标签属性值,用于判断用户是否可以操作发送数据 。另外在表单提交后,服务器去判断用户session是否处在,这样一般就不怕没登录也能操作了。如果还不放心的话,加个令牌,前后端对比下就好了。

@niannian2013 我试试,谢谢

回到顶部