Javascript 当url有一些参数时显示引导模式

Javascript 当url有一些参数时显示引导模式,javascript,jquery,twitter-bootstrap,bootstrap-modal,Javascript,Jquery,Twitter Bootstrap,Bootstrap Modal,我是开发网络应用程序的新手,我正在创建一个小型项目,它有一个简单的注册、签名系统,我不想让用户转到另一个页面登录,相反,我使用了一个有一个登录表单的,我有一个按钮,单击该按钮也会更改url并触发模式。现在我只想显示模式,如果url有参数=?action=login 首先,我尝试了document.getElementById('#myBtn')。将EventListener('click',setQry)添加到我的按钮,该按钮调用函数,该函数在单击时更改url参数。url参数在单击时会发生更改,

我是开发网络应用程序的新手,我正在创建一个小型项目,它有一个简单的注册、签名系统,我不想让用户转到另一个页面登录,相反,我使用了一个有一个登录表单的,我有一个按钮,单击该按钮也会更改url并触发模式。现在我只想显示模式,如果url有参数=
?action=login

首先,我尝试了
document.getElementById('#myBtn')。将EventListener('click',setQry)
添加到我的按钮,该按钮调用函数,该函数在单击时更改url参数。url参数在单击时会发生更改,但模式不会显示,请注意,我的按钮上有
数据目标
数据切换
属性,用于显示模式。我也试过了。但它不起作用

我只是想实现模式应该显示,如果url有参数 登录成功后,我想隐藏模式并删除url参数

这是我的HTML:

<button type='button' id='toggle-modal' data-toggle='modal' data-target='#login-modal'></button>

这段代码应该可以工作,您的处理程序只在单击时启动,它对页面加载没有影响,因此,应该调用它来处理页面加载上的参数,很抱歉我的英语不好

setQry();
函数setQry(){
const url=新url('http://localhost/learning%20php/practice%20programs/login%20system/');
var qry_params=新的URLSearchParams(url.search);
如果(!qry_参数有('action','login')){
qry_参数集('action','login');
window.location.search=qry_参数;
}
if(window.location.search==qry_参数){
$(“#登录模式”).model('show');
}

};考虑使用PHP实现这一点。您可以在PHP中获取get参数,然后根据get参数更改内容

<?php

if ($_GET['action'] == "login")
{

?> 

<!-- Add content in html if action code is set to "login" --> 

<?php

}

else
{ 
....

} 

?>

  • 单击按钮时会调用两次事件。所以我已经从按钮中删除了其他属性。
    
    
  • document.getElementById(“#切换模式”).addEventListener('click',setQry)中使用的
    也造成了问题

  • 在javascript
    qry_params.set('action','login')中设置参数正在刷新页面。所以弹出窗口很近

  • 下面给出了更新代码,希望它能解决这个问题 ``"`

    
    document.getElementById('toggle-modal')。addEventListener('click',setQry);
    函数setQry(){
    const url=新url('http://localhost/learning%20php/practice%20programs/login%20system/?action=login');
    var qry_params=新的URLSearchParams(url.search);
    if(window.location.search.replace(“?”,“)==qry\u参数){
    $(“#登录模式”).model('show');
    }
    }; 
    
    对不起,我在url参数?action=login上有输入错误。感谢您的编辑手册。您是否在浏览器url中添加了
    ?action=login
    ?最后它开始工作了,但奇怪的是,第二次单击后,模态就被激活了。如果您能够解决第二次单击的问题,那将非常棒,下面是我的代码函数setQry(){var url=window.location.href.toString();var qry_str='?action=login';if(url.endsWith(qry_str)==false){window.location.search=qry_str;}if(window.location.search==qry_str){$('#login modal').modal('show');}}我检查了您的代码,首先单击浏览器url中的设置查询字符串,然后再单击弹出窗口。因此,如果您删除
    if(url.endsWith(qry_str)==false){window location.search=qry_str
    并在浏览器url中使用
    ?action=login
    它将按照您的预期工作。尝试此代码它将解决您的问题函数setQry(){var url=window.location.href.toString();var qry_str='?action=login';if(url.endsWith(qry_str)==false){if(window url=window.history.pushState){const newURL=newURL=newURL(window.location.href);newURL.search='?action=login';window.history.pushState({path:newURL.href}',newURL.href);}}}如果(window.location.search==qry_str){$('.#登录模式')。模式('show');}
    <?php
    
    if ($_GET['action'] == "login")
    {
    
    ?> 
    
    <!-- Add content in html if action code is set to "login" --> 
    
    <?php
    
    }
    
    else
    { 
    ....
    
    } 
    
    ?>
    
    <button type='button' id='toggle-modal' ></button>
    
    
    <script>
    document.getElementById('toggle-modal').addEventListener('click', setQry);
    function setQry() {
    
    const url = new URL('http://localhost/learning%20php/practice%20programs/login%20system/?action=login');
    var qry_params = new URLSearchParams(url.search);
    if (window.location.search.replace("?", "") == qry_params) {
            $('#login-modal').modal('show');
        }
    
    }; </script>