Javascript 如何在重新加载页面后隐藏一个模式并显示另一个模式?

Javascript 如何在重新加载页面后隐藏一个模式并显示另一个模式?,javascript,php,ajax,forms,Javascript,Php,Ajax,Forms,我有一个情态动词。提交表单时,我希望模式关闭,页面重新加载,然后显示成功模式 但是当我单击submit时,成功模式显示在模式表单上,然后页面重新加载,没有模式 这是我的代码: $.ajax({ type: "POST", url: "includes/handlers/ajax_submit_profile_post3.php", data: $('form.profile_post3').serialize(), success: function(msg) {

我有一个情态动词。提交表单时,我希望模式关闭,页面重新加载,然后显示成功模式

但是当我单击submit时,成功模式显示在模式表单上,然后页面重新加载,没有模式

这是我的代码:

$.ajax({
    type: "POST",
    url: "includes/handlers/ajax_submit_profile_post3.php",
    data: $('form.profile_post3').serialize(),
    success: function(msg) {
        $("#post_form3").modal('hide');
        location.reload();
        $("#successModal").modal('show');
    },
    error: function() {
        alert('Failure');
    }
});

location.reload
已刷新页面,因此成功回调中的最后一行不再执行(或者至少对重新加载的页面没有影响)。因此,重新加载后不会显示模式

归档目标的方法是使用特殊参数刷新页面,并在加载页面时检查该参数(然后显示模式)

因此,不要使用
location.reload()
执行类似(Edited)的操作:

在页面本身(加载时)执行以下操作(已编辑)):

因此,重新加载的页面现在将包含一个额外的url参数,页面本身将检查该参数,并在参数存在时打开成功模式

编辑: 代码现在处理所有url(如果已经有url参数,也可以使用),因此您还需要添加两个javascript帮助程序函数:

//https://stackoverflow.com/a/6021027/1578780
function updateQueryStringParameter(uri, key, value) {
  var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
  var separator = uri.indexOf('?') !== -1 ? "&" : "?";
  if (uri.match(re)) {
    return uri.replace(re, '$1' + key + "=" + value + '$2');
  }
  else {
    return uri + separator + key + "=" + value;
  }
}

//https://stackoverflow.com/a/901144/1578780
function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

谢谢,这是一个好主意,但我已经设置了URL参数,所以地址将是这样的:
poem.php?ip=4496?success
现在我需要修改这一行以使其工作
if(window.location.search==“?success”){
但我担心ip函数值会被更改并破坏我的页面。请检查任何建议,是的,它破坏了我的页面。我不能将参数存档到任何地方(但不在URL中)并在加载页面时检查它以显示模式吗?请帮助我@Evil_skunkI更新我的答案(参见3次编辑),现在它使用了一些帮助函数,并且可以处理包含其他url参数的页面(例如您
id
param)太好了。非常感谢您的耐心和帮助。如果您愿意的话,现在每次我在模式提交后刷新页面,它都会不断显示模式成功消息,我不能只显示第一次吗?
$(document).ready(function() {
    if(getParameterByName("success",window.location.href) == "true"){
        $("#successModal").modal('show');
    }
});
//https://stackoverflow.com/a/6021027/1578780
function updateQueryStringParameter(uri, key, value) {
  var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
  var separator = uri.indexOf('?') !== -1 ? "&" : "?";
  if (uri.match(re)) {
    return uri.replace(re, '$1' + key + "=" + value + '$2');
  }
  else {
    return uri + separator + key + "=" + value;
  }
}

//https://stackoverflow.com/a/901144/1578780
function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}