ajax异步登陆页面无法跳转

zyn468 2015-01-31 06:58:15
我在做一个登陆界面,用ajax异步
登陆失败:登陆框显示一句错误信息,不喜欢alert弹出框。
登陆成功:根据用户的身份跳转到不同的页面。

<script type="text/javascript">
$(function () {
$('#btnlogin').click(function () {
$.ajax({
type: "post", //客户端向服务器发送请求时采取的方式
contentType: "application/json", //指定客户端发送给服务器的内容的类型以及服务器返回给客户端内容的类型为json格式
url: "WebService1.asmx/ValidateUser", //指明客户端要向哪个页面里面的哪个方法发送请求
data: "{user:'" + $('#auth_email').val() + "',pass:'" + $('#auth_password').val() + "'}", //指定伴随发送的请求传递到服务器的参数
// data:$('#authentication').serialize(),
async: false,

success: function (result) {//客户端调用服务器端方法成功后执行的回调函数
if (result.d == "false") {
var alertbox = document.getElementById("alertmessage");
alertbox.style.display = "block";
return false;
// alert("登录失败");
}
else if (result.d == "A") {
alert(result.d);
location.href = "http://www.baidu.com";
}
}
})
})
})
</script>


问题:
1. 错误信息能显示,但是闪一下之后整个页面更新,能不能只让error message显示,而不更新整个页面?
2. 跳转遇到问题,貌似跟async: false有关?
3. 原本判断用户身份跳转不同界面的代码放在aspx.cs当中,跳转带session,这部分现在要怎么处理比较好?放在webservice里面吗?

菜鸟一个,问题有点多,求大神指点。
...全文
397 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyn468 2015-02-05
  • 打赏
  • 举报
回复
<script type="text/javascript"> $(function () { $('#btnlogin').click(function () { $.ajax({ type: "post", contentType: "application/json", url: "WebService1.asmx/ValidateUser", data: "{user:'" + $('#auth_email').val() + "',pass:'" + $('#auth_password').val() + "'}", async: false, success: function (result) { switch (result.d) { case 'false': var alertbox = document.getElementById("alertmessage"); alertbox.style.display = "block"; break; case 'Admin': alert(result.d); // window.open(Admin_Tab.aspx) window.location.href = '/Admin_Tab.aspx'; break; case 'A': alert(result.d); window.location.href = '/Profile.aspx'; break; case 'P': window.location.href = '/application-complete.html'; break; case 'W': window.location.href = '/disenroll.html'; break; case 'Unfinished': alert(result.d); window.location.href = '/application.aspx?Email=' + $('#auth_email').val(); break; } } }) return false; }) }) </script> 我现在代码修改成这样,登陆错误的部分问题已经解决。 登陆成功以后,页面的跳转分很多种情况,这里html的都可以跳转,aspx都不行,是什么问题?
zyn468 2015-02-05
  • 打赏
  • 举报
回复
谢谢楼上三位, 第一条问题已解决。 那么请问如果我登陆成功后跳转页面要带session要怎么处理?可能实现吗?
XIAO_YAO_YOU_0 2015-02-04
  • 打赏
  • 举报
回复
<script type="text/javascript"> $(function () { $('#btnlogin').click(function () { $.ajax({ type: "post", //客户端向服务器发送请求时采取的方式 contentType: "application/json", //指定客户端发送给服务器的内容的类型以及服务器返回给客户端内容的类型为json格式 url: "WebService1.asmx/ValidateUser", //指明客户端要向哪个页面里面的哪个方法发送请求 data: "{user:'" + $('#auth_email').val() + "',pass:'" + $('#auth_password').val() + "'}", //指定伴随发送的请求传递到服务器的参数 // data:$('#authentication').serialize(), async:true, success: function (result) {//客户端调用服务器端方法成功后执行的回调函数 if (result.d == "false") { var alertbox = document.getElementById("alertmessage"); alertbox.style.display = "block"; alert("登录失败"); } else if (result.d == "A") { alert(result.d); location.href = "http://www.baidu.com"; } } }) return false; }) }) </script> www.lanyouinfo.com
u010341022 2015-02-03
  • 打赏
  • 举报
回复

<script type="text/javascript">
       $(function () {
           $('#btnlogin').click(function () {
               $.ajax({
                   type: "post", //客户端向服务器发送请求时采取的方式
                   contentType: "application/json",  //指定客户端发送给服务器的内容的类型以及服务器返回给客户端内容的类型为json格式
                   url: "WebService1.asmx/ValidateUser", //指明客户端要向哪个页面里面的哪个方法发送请求
                   data: "{user:'" + $('#auth_email').val() + "',pass:'" + $('#auth_password').val() + "'}", //指定伴随发送的请求传递到服务器的参数
                   // data:$('#authentication').serialize(),
                   async:true,
                 
                   success: function (result) {//客户端调用服务器端方法成功后执行的回调函数 
                       if (result.d == "false") {
                           var alertbox = document.getElementById("alertmessage");
                           alertbox.style.display = "block";
                           
                           alert("登录失败");
                       }
                       else if (result.d == "A") {
                           alert(result.d);
                           location.href = "http://www.baidu.com";
                       }
                   }
               })
        return false;
           })
       })
    </script>
thisisdell 2015-01-31
  • 打赏
  • 举报
回复
这是我常用的:

            $.ajax({
                cache: false,
                type: "POST",
                url: 'Data.ashx?action=logon&rand=' + Math.random(),
                data: $('#frmLogon').serialize(),
                dataType: 'json',
                success: function (msg) {
                    switch ($.trim(msg)) {
                        case '1':
                            window.location.href = '/Default.aspx?rand=' + Math.random();
                            break;
                        case '2':
                            $("#errorMessage").html('验证码错误');
                            break;
                        case '8':
                            $("#errorMessage").html('该账号没有管理权限');
                            break;
                        case '9':
                            $("#errorMessage").html('账号已被禁用');
                            break;
                        default:
                            $("#errorMessage").html('账号或密码错误');
                            break;
                    }
                },
                error: function () {
                    $("#errorMessage").html('系统异常!请重新登录,或者稍候再试');
                    enableSaveModify();
                }
            });

  • 打赏
  • 举报
回复
这里写 return false; 豪无意义,加之 javascript 也不会给你检查出语法和逻辑的基本错误,所以你需要靠加强对javascript、函数、异步操作机制的理解才行。 这里写 return ...,只是对 success: function (result){} 的返回值。而 btnlogin 的 click 早就完成了。你根本没有为 click 事件返回 false。 你应该在最外层返回 false,而不是在回调函数内写。例如 }) }); return false; }) 其实如果使用 ajax,那么你就不应该使用 <form>提交页面回发的。删除 <form>要比写一个 return false更重要,而且这样也就不需要写 return false 了 。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧