0

将 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();
    }
});

表单张贴。我可以在 Visual Studio 的 login.aspx 的 Page_Load 方法中对其进行调试。Page_Load 方法的最后一行是:

Response.Redirect("welcomepage.html");

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

尝试修复

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

4

1 回答 1

1

XmlHttpRequests 将透明地跟随重定向,这意味着 $.post()所做的 AJAX 调用重定向,并且跟随它......而不是实际的父页面。

$.post()不做常规回发,它做 AJAX POST这可能是混乱的根源,<form>如果你打算做一个常规的、换页的回发,你应该使用一个标准。

于 2010-10-05T16:10:31.677 回答