我有一个带有多个选择框的HTML / PHP表单。在提交表单时,我调用一个jquery函数来创建一个查询字符串,其中包含来自选择框和一些其他变量的变量,并将此查询字符串传递给jQuery Tools Overlay以在外部加载它。
叠加正确加载并显示具有正确查询字符串的页面。当我关闭叠加层,更改一些选择框值并重新提交表单时出现问题。外部页面仍然被加载,但是查询字符串没有刷新,它保持与打开叠加层的第一个实例上的相同。
以下是我的jquery代码:
$(function(){
$('#form').submit(function(){
. //code to get $str which contains the querystring Example $str="page='abc'&sub='xyz'"
.
$go='displaygroups.php?'+$str;
alert($go);//just to check if querystring is correct.
dispgrps($go);
return false;
});
function dispgrps($go){
$("#overlay").overlay({
// custom top position
top: 100,
// some mask tweaks suitable for facebox-looking dialogs
mask: {
color: '#d1eaf1',
loadSpeed: 10,
opacity: 0.9
},
// load it immediately after the construction
load: false,
onBeforeLoad: function() {
// grab wrapper element inside content
var wrap = this.getOverlay().find(".contentWrap");
// load the page specified in the trigger
wrap.load($go);
},
onClose:function(){
$('.contentWrap').html('Loading...');
}
});
$("#overlay").overlay().load();
}
});
如果我第一次使用page ='1'从选择框提交,那么即使将select的值更改为page ='2'并重新提交表单,外部页面displaygroups.php仍会将页面反映为1。
我只是回显displaygroups.php上的值进行测试:
if(isset($_GET['page'])) echo $_GET['page'];
overlay css元素是
<div class="apple_overlay" id="overlay">
<!-- the external content is loaded inside this tag -->
<div class="contentWrap">Loading...</div>
</div>
请帮忙。谢谢。
编辑:无法搞清楚,所以我更改了代码,使其成为链接而不是表单提交。它现在有效。答案 0 :(得分:0)
尝试更改
$(function() { // code }
第1行到
(function ($) {
// code
})(jQuery)
现在你把所有东西包裹在一个jquery对象中。
这可能有所帮助, Why define an anonymous function and pass it jQuery as the argument?