如何在jQuery中使用window.location重新加载相同的页面?

时间:2011-08-01 07:27:55

标签: php jquery

我有一个JQuery函数

(function ($) {
jQuery.fn.saveUser = function(destinationUrl) {
    this.click(function() {
        var formData = 'option=saveuser&'+$('form#save-user').serialize();
        $.ajax({
            type: 'POST',
            url:  'process.php',
            data: formData,
            success: function(msg){
                if(msg === 'empty') {
                    alert('Required Values Missing');
                } else if(msg === 'duplicateEmail'){
                    alert('Email already exist');
                } else {
                    window.location = destinationUrl;
                }
            }
        });
    });
}

现在基于一些动作和事件,我将其重定向到不同的页面,在这种情况下我需要它将其重定向到两个不同的URL。

1) reload the same page preserving all $_GET variables via URI

2) reload to the specified url.

以下jQuery代码可以将我重定向到任何特定网址。

$('form#save-user button[name="save-user-close"]').saveUser(function() {
    return 'index.php?users';
});

但是我没有得到如何将其重定向到同一页面。

$('form#save-user button[name="save-user-close"]').saveUser(function() {
    return location.reload(true);
});

我知道上面的代码不起作用,我很困惑我怎么用这个?

2 个答案:

答案 0 :(得分:4)

您永远不会在代码中调用该函数,因此无论您在函数中放置什么内容都无法正常工作。 Intead of:

window.location = destinationUrl;

你应该调用该函数,让函数进行重定向:

destinationUrl();

(您可能希望重命名参数以反映使用情况的变化。)

因此,您的函数应该执行重定向而不是返回URL,以便您可以在第二个中使用reload方法:

$('form#save-user button[name="save-user-close"]').saveUser(function() {
  window.location = 'index.php?users';
});

$('form#save-user button[name="save-user-close"]').saveUser(function(e) {
  location.reload(true);
});

答案 1 :(得分:3)

window.location.href=window.location.href;

 location.replace(URL);

但是保留变量你可以接近查询字符串或会话变量