jQuery Overlay查询字符串没有刷新

时间:2013-01-25 12:33:34

标签: jquery overlay query-string jquery-tools

我有一个带有多个选择框的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>

请帮忙。谢谢。

编辑:无法搞清楚,所以我更改了代码,使其成为链接而不是表单提交。它现在有效。

1 个答案:

答案 0 :(得分:0)

尝试更改

$(function() { // code }

第1行到

(function ($) { 
    // code
})(jQuery)

现在你把所有东西包裹在一个jquery对象中。

这可能有所帮助, Why define an anonymous function and pass it jQuery as the argument?