我正在使用ColorBox jQuery plugin,但我遇到了一个奇怪的问题。以下是我的代码:
<script>
$("#spv14DL").colorbox({width: "500px",
height:"500px" });
</script>
...
<a href="/popups/spv14.aspx" id="spv14DL">Open this popup!</a><br />
当我点击链接时,一切都按预期打开。但是,当我点击我在aspx页面上的按钮时,它永远不会触及spv14.aspx
后面的代码,它会重定向到baseUrl.com/spv14.aspx
而不是baseUrl.com/popups/spv14.aspx
,这会导致404错误。
我做错了会导致这种行为吗?
答案 0 :(得分:2)
该错误的原因是默认情况下,colorbox插件使用异步GET
请求获取引用页面的内容并将其放入对话框容器中。因此,如果您在对话框打开时检查页面的标记,您会发现有一个带有form
元素的引用页面和对话框容器内的所有控件。此表单的action属性也指向spv14.aspx
页面,没有任何根路径。有一些解决方案存在。让我们从最难以最简单的方面来检验它们:
form
页面的spv14.aspx
元素的操作属性:action="\popups\spv14.aspx"
。此解决方案的缺点是,在回发后操作用户将被重定向到弹出页面。如果IsPostback属性返回Response.Redirect
值PreRender
,则可以使用弹出页面的true
方法中的if(IsPostBack) { Response.Redirect(Request.UrlReferrer.ToString(), false); }
方法调用来修复此差距。iframe: true
。在我看来,这个解决方案看起来不太好。iframe
选项传递给colorbox插件。这是在对话框中使用所有aspx页面内容的最轻松方式。结论:使用{{1}}选项的第三种方法是最原生且最轻松的解决方案。
P.S。抱歉我的英文:)