将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重定向,我可能不需要这个修复。
答案 0 :(得分:1)
XmlHttpRequests will transparently follow the redirect,这意味着$.post()
使 重定向的AJAX调用,并且跟随它...而不是实际的父页面。
$.post()
不执行常规回发,它会执行AJAX POST
,这可能是混淆的根源,您应该使用标准<form>
如果你打算做一个定期的,改变页面的回发。