代码之家  ›  专栏  ›  技术社区  ›  David Fox

$.post带有facebox和重定向的表单

  •  0
  • David Fox  · 技术社区  · 14 年前

    $k('a[rel*=example_2]').facebox_1({
      loading_image : '/images/loading.gif',
      close_image   : '/images/closelabel.gif'
    });
    

    打开它的链接

    <a href="login.html" title="Log In" rel="example_2" id='login'>Log In </a>
    

    提交带有用户名和密码的表格(登录.html):

    <form name="login" method="post" action="#" onsubmit="return false;">
    

    $('form[name="login"]').submit(function () {
        var $loginForm = $('form[name="login"]');
        if ($loginForm.valid()) {
            $.post("Login.aspx", $(this).serialize());
        } else {
            $loginForm.validate();
        }
    });
    

    表格张贴。我可以在Visual Studio中使用登录.aspx. 页面加载方法的最后一行是:

    Response.Redirect("welcomepage.html");
    

    但是,Facebox弹出窗口仍然存在。Firebug显示帖子,点击页面加载方法登录.aspx,而Facebox弹出式窗口不会出现在任何地方。 但是, 萤火虫表演欢迎页面.html在XHR的Response选项卡中呈现两次(嗯?为什么是XHR?)请求。我以为$.post定期回邮。为什么我的浏览器没有真正重定向。

    尝试修复

    action='login.aspx' ,我得到不允许的405.0错误方法( ). 我不知道如何在Windows7上的IIS7.5中修复这个问题。我在Visual Studio中得到这个错误 在本地部署到IIS时。我读过它可能与脚本映射、处理程序有关,也可能是因为我发布了一个,但找不到足够的修复程序。有什么想法吗?如果我能找出Facebox重定向,我可能不需要这个修复。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Nick Craver    14 年前

    XmlHttpRequests will transparently follow the redirect ,这意味着AJAX调用 $.post() 制造的 被重定向,并跟随它…而不是实际的父页面。

    $.post() 做一个常规回发,它做一个AJAX POST ,这可能是混淆的根源,您应该使用一个标准 <form>

    推荐文章