目前有一些关于jquery的实际问题。基本上我到目前为止是。表格提交后,表格会提交一个带有相关信息的灰色框弹出窗口。
我需要做的是刷新整个页面,然后让灰色框出现。
我有以下代码
$("#ex1Act").submit(function() {
//$('#example1').load('index.php', function()
$("#example1").gbxShow();
return true;
});
注释掉的行在提交表单后再次加载页面,其他代码使灰色框弹出。
他们是否可以说:
$('#example1').load('index.php', function()
已经被这样做了:
$("#example1").gbxShow();
希望这是有道理的。
答案 0 :(得分:2)
这是不可能的。
提交表单后,在提交表单的页面上运行的Javascript完全消失了;它不会影响表单返回的页面。
相反,如果表单已提交,则应将服务器端代码放在将$("#example1").gbxShow();
写入单独的<script>
块中的表单中。
答案 1 :(得分:2)
为什么不正常提交表单(即不使用JavaScript)并在结果页面中添加一个变量来表示是否需要显示灰盒子?像这样:
<?php if(isset($_POST['submit'])): ?>
<script type="text/javascript">
var showGreyBox = true;
</script>
<?php endif; ?>
...
<script type="text/javascript">
$(function(){
if(showGreyBox !== undefined){
// execute code to show the grey box
}
});
</script>
这样的事,也许?
答案 2 :(得分:1)
您遇到的问题是网页是“无状态的”。这意味着您无法执行一些JavaScript,刷新页面并继续使用JavaScript。刷新页面时,会丢失当前状态,页面将从头开始。
您需要重新设计您的设计,以牢记页面生命周期(即所有JavaScript在导航时永久停止)。
一种解决方案可能是使用jQuery AJAX表单插件,它将表单提交给服务器并返回提交结果,这样可以避免破坏页面生命周期。然后,您可以根据需要显示该框。
答案 3 :(得分:0)
执行此操作的标准方法是让服务器返回对表单帖子的响应中的灰色框内容。
您可以通过将页面和灰色框放入单独的iFrame中来在jquery中执行此操作,以便从页面刷新中获得安全