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

时间:2010-10-05 16:07:10

标签: asp.net jquery postback http-status-codes facebox

将Facebox与.NET(Web窗体)一起使用很痛苦 - 这个主要是HTML网站是由其他人设计的。我也可能有IIS(7.5)问题。此Facebox弹出窗口位于一个单独的文件login.html中,该文件从index.html:

调用
$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>

使用用户名和密码(login.html)提交的表单:

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

在验证之后(这是有效的),它发布到login.aspx(login.html):

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

表格帖子。我可以在login.aspx的Page_Load方法中在Visual Studio中调试它。 Page_Load方法的最后一行是:

Response.Redirect("welcomepage.html");

但是,Facebox弹出窗口仍然存在。 Firebug显示帖子,它点击login.aspx的Page_Load方法,并且Facebox弹出窗口不会去任何地方。 但是, Firebug在XHR的响应标签中显示了welcomepage.html两次(为什么是XHR?)请求。我以为$ .post做了定期的回发。为什么我的浏览器实际上不是重定向的。

尝试修复

如果我将login.html中的表单更改为action='login.aspx',我会收到405.0错误的方法(但是,它试图发布到index.html,HUH?)。我无法弄清楚如何在Windows 7上的IIS 7.5中解决此问题。在本地部署到IIS时,我在Visual Studio 中收到此错误。我读过它可能与脚本映射,处理程序或我发布的事实有关,但我找不到足够的修复程序。这里有什么想法?如果我能找出Facebox重定向,我可能不需要这个修复。

1 个答案:

答案 0 :(得分:1)

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

$.post() 执行常规回发,它会执行AJAX POST,这可能是混淆的根源,您应该使用标准<form>如果你打算做一个定期的,改变页面的回发。