我用jqury.form.js 异步提交了一个登陆账号表单,服务端验证通过了,我写了一个cookie,返回的数据全被js拦截了,cookie也没有写到浏览器,我要怎么才能处理这个cookie呢?
下面是我的golang代码片段
```
func loginHandler(w http.ResponseWriter, r *http.Request){
//do something
// 获取表单信息 加 判断
//返回cookie
SetCookie(loginInfo.username,w)
http.Redirect(w, r, "/", 302)
return
}
func SetCookie(name string, w http.ResponseWriter){
if(name != ""){
UserOnline[name] = "online"
} else {
return
}
if encode, err := cookieHandler.Encode("cookie", UserOnline[name]);err == nil {
cookie := &http.Cookie{
Name:"cookie",
Value:encode,
Path: "/",
}
http.SetCookie(w,cookie)
}
}
```
这是js代码
```
$("#login_submit").click(function(e){
e.preventDefault();
var options = {
dataType: "json",
success: function(data){
console.log(data[0].Msg);
},
error: function(data){
console.log("login status failed");
console.log(data);
}
};
$("#login").ajaxSubmit(options);
});
```
同样的一个问题,我重定向之后的操作也一样被js拦截。我想过js提交,那就应该有js处理结果,可cookie怎么破啊?请大神解答,谢谢~
好吧,前两天已经想到了一个办法解决,留着以后有人遇到相同问题时 看看吧~
js异步提交表单之后,服务端返回的数据,同时也会被js拦截,连服务端的重定向,也被js接收到了,不会使浏览器跳转。这时候就利用这一点,返回的数据不要是cookie,或者跳转之类,而是返回一个状态码,登陆成功或者失败不同情况的状态码。如果成功,则再一次提交表单,js正常提交表单,这时服务端就可以写入cookie ,或者各种操作了。~ :smile:
```
$("#login_submit").click(function(e){
//do something
if(账号密码正确){
loginAgain();
}
}```
```
function loginAgain() {
$("#login").attr("action","loginAgain");
$("#login").submit();
}
```
#1