2016-06-09 5 views
0

html 템플릿을 사용하여 Google Script를 사용하여 로그인 양식을 구현했습니다. 나는 URL에서 데이터를 가져 오는하고 다음 성공을 가져 오는 경우 가져 오기가 500html 페이지에 오류를 표시하는 방법

는 기본적으로 나는 urlResponse 반환하면 HTML 페이지에 오류 메시지를 추가 할 catch 반환 오류 코드를 실패 할 경우 try 블록은, 다른 평가 usernamepassword이 잘못되어 오류가 발생했습니다.

예 : 로그인 입력 필드에 usernamepassword을 잘못 입력하면 오류 메시지가 error div 안에있는 페이지 상단에 나타납니다.

HTML :

<body> 
    <div class="error"></div> 
    <form> 
     <fieldset class='login'> 
      <div class="required"> 
       <label for="email">Email:</label> 
       <input type="text" id="username" class="input-text" size="10" maxlength="50" value="[email protected]" /> 
      </div> 

      <div class="required"> 
       <label for="pass">Password:</label> 
       <input type="password" id="password" class="input-password" size="10" maxlength="15" value="some-password" /> 
      </div> 
     </fieldset> 

     <input type="submit" id="submit-btn" value="Login" name='Submit' class='btn'/> 
    </form> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script> 
     $('#submit-btn').click(function() { 
      google.script.run 
      .login({ 
       user: $('#username').val(), 
       pass: $('#password').val() 
      }); 
     }); 
    </script> 
    </body> 

GS :

내가 구글 스크립트를 새로운 오전과 내가이 문제를 해결하기위한 모든 솔루션을 열어주는 말들는 ...

내 코드입니다
function onOpen() { 
    SpreadsheetApp.getUi() 
     .createMenu('Menu') 
     .addItem('Show sidebar', 'showSidebar') 
     .addToUi(); 
} 

function showSidebar() { 
    var html = HtmlService.createHtmlOutputFromFile('login') 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME) 
     .setTitle('Title') 
     .setWidth(300); 
    SpreadsheetApp.getUi() 
     .showSidebar(html); 
} 

function login(data){ 
    Logger.log(data); 
    var endpoint = 'login'; 
    var url = 'https://example.com/api/'+endpoint; 
    var payload = { 
    'username' : data.user, 
    'password' : data.pass, 
    } 
    var headers = { 
    'Connection':'keep-alive', 
    'Content-Type':'application/json;charset=utf-8', 
    'Accept':'application/json, text/plain, */*', 
    'Cookie':'...', 
    } 
    var options = { 
    'method' : 'post', 
    'headers' : headers, 
    'payload': JSON.stringify(payload), 
    }; 
    try { 
    var urlResponse = UrlFetchApp.fetch(url, options); 
    Logger.log(urlResponse) 
    Logger.log(urlResponse.getResponseCode()); 
    } 
    catch(e) { 
    Logger.log(e.message); 
    } 
} 
+0

제목에 태그를 넣지 마십시오. http://stackoverflow.com/help/tagging을 참조하십시오. –

답변

2

다음과 같이 .withFailureHandler() 함수를 추가하여이를 해결했습니다.

function onFailure(error) { 
    $('.alert').show(); 
    var div = document.getElementById('error'); 
    div.innerHTML = "ERROR: " + "Wrong username or password"; 
} 
$('#submit-btn').click(function() { 
    google.script.run 
    .withFailureHandler(onFailure) 
    .login({ 
     user: $('#username').val(), 
     pass: $('#password').val() 
    }); 
}); 
관련 문제