首页 > 解决方案 > 用户名和密码未传递到同一页面

问题描述

html 登录页面应该使用有效的用户名和密码从谷歌表格中确认,然后提供对包含数据的页面的访问。如果输入了无效的用户名和密码,则应使用带有“无效的用户名或密码”消息的不同 html 页面刷新相同的选项卡。当我将目标元素定义为“_blank”时,代码工作正常,但当目标元素设置为“_self”时显示“script.google.com 无法连接”错误

登录.html

     <script>
        google.script.run.withFailureHandler(failed).
    withSuccessHandler(dropdown).getDropdown("Offices", "A", 3, "list");

    function dropdown(dropdown){
       var datalist = document.getElementsByClassName(dropdown[0]);
           var len = dropdown.length;
           var options = ""; 
           for (i = 1; i < len; i++) {
               options = options + "<option value='" + dropdown[i] + "'>" + 
    dropdown[i] + "</option>";
             }
             for (n in datalist) {
                 datalist[n].innerHTML = options;
             } 
     }


function failed(e){
alert("Error:", +e);
}

</script>
      <form 
         action= "https://script.google.com/a/macros/caplineservices.com/s/
         AKfycbw1BhOakZMzoGnErWw2uBuZzDawn8ThQjEQpBm_nSd6Eyb3NITF/exec"
         method="POST" target="_self" 
         align="right" id="loginForm" style="transform:translateX(-5%)" >

    <h4 style="font-size:40px;
 font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; 
color:#4fbcef">Login</h4>

   <p> Select Office: <select class="list" name="officeName" 
style="padding: 3px;width:200px;color:#ffffff;" ></select></p>

   <p style=""> Username: <input type="text" name="userName" 
placeholder="Username" style="padding: 3px;width:200px;">
    </p>
    <p> Password: <input type="password" name="password" 
placeholder="Password" style="padding:3px;width:200px;"> 
        </p>
    <input type="submit" value="Login" align="center" class="submit">
    </form>
  </body>
</html>

post.gs 文件

function doPost(e){
if(e.parameter.officeName!="" && e.parameter.userName=="admin" && 
e.parameter.password=="admin"){
 return ivDashboard(e.parameter.officeName);
  }
else{
return faulty();
  }
}

function ivDashboard(officeName){
   var html = HtmlService.createTemplateFromFile("index");
   html.officeName = officeName;
   return html.evaluate();
}

function faulty(){
var html=HtmlService.createTemplateFromFile("faultyLogin");
return html.evaluate();
}

faultyLogin.html

     <script>
         google.script.run.withFailureHandler(failed).
    withSuccessHandler(dropdown).getDropdown("Offices", "A", 3, "list");

       function dropdown(dropdown){
          var datalist = document.getElementsByClassName(dropdown[0]);
                var len = dropdown.length;
                var options = ""; 
                for (i = 1; i < len; i++) {
                    options = options + "<option value='" + dropdown[i] + 
    "'>" + dropdown[i] + "</option>";
                }
                for (n in datalist) {
                    datalist[n].innerHTML = options;
                 } 
        }


function failed(e){
alert("Error:", +e);
}

</script>

     <form  
 action="https://script.google.com/a/macros/caplineservices.com/s/
AKfycbw1BhOakZMzoGnErWw2uBuZzDawn8ThQjEQpBm_nSd6Eyb3NITF/exec" 
    method="POST" target="_blank" align="right" id="loginForm" 
style="transform:translateX(-100px)">
    <!-- IV Form web app url where the database sheet is linked and request 
will be processed-->
    <h4 style="font-size:40px;
 font-family: 'Trebuchet MS', Arial, Helvetica, serif; 
color:#4fbcef">Login</h4>
 <p style="color:red;font-size:110%;font-style:italic;"> Please enter 
correct username or password.</p>    
   <p> Select Office: <select class="list" name="officeName" 
style="padding: 3px;width:200px;color:#ffffff;" ></select></p>

   <p style=""> Username: <input type="text" name="userName" 
placeholder="Username" style="padding: 3px;width:200px;">
    </p>
    <p> Password: <input type="password" name="password" 
placeholder="Password" style="padding:3px;width:200px;"> 

    </p>
    <input type="submit" value="Login" align="center" class="submit">
    </form>

标签: javascripthtmlgoogle-apps-scriptweb-applicationsgoogle-sheets

解决方案


由于脚本在 iframe 中运行,target因此只能是_blankor _top1。用于_top加载顶部框架。


推荐阅读