2016-12-22 104 views
1

我想處理從服務器端返回的json響應。爲此,我設置了將從服務器端成功響應執行的回調函數,並且通過接受它作爲參數進一步處理服務器響應,但它不起作用。即使服務器端函數成功返回回調函數

這是我的html代碼:

<form id="EditorsForm"> 
    UserName:<br> 
    <input type="text" name="uname" id="uname"> 
    <br> Password: 
    <br> 
    <input type="password" name="password" id="password"> 
    <br><br> 
    <input type="button" value="Submit" onclick="google.script.run.withSuccessHandler(onSuccess).verifyUser(this.form)"> 
</form> 

這是我的回調函數

function onSuccess(response) { 
    alert(response); 
} 

這是我的應用程序腳本成功返回JSON響應。

function verifyUser(EditorsForm) {  
    var uname = EditorsForm.uname; 
    var password = EditorsForm.password; 

    login_api = "http://api.abcbrain.in/operations/login.php?userName=" + uname + "&password=" + password + "&referrer=ePlugin"; 
    var resp = UrlFetchApp.fetch(login_api); 
    var json = resp.getContentText(); 
    var data = JSON.parse(json); 
    return data; 
} 

回答

1

我剛纔測試了你的代碼硬編碼JSON在verifyUser()函數如下,

function verifyUser(EditorsForm){ 

    var uname=EditorsForm.uname; 
    var password=EditorsForm.password;  

    /*login_api="http://api.smsbrain.in/operations/login.php?userName="+uname+"&password="+convertSign(password)+"&referrer=excelPlugin";      
    "http://api.smsbrain.in/1.2/appsms/brandStatus.php?user="+uname+"& passwd="+password+"&senderId="+sid+""; 
    var resp=UrlFetchApp.fetch(login_api); */ 

    var json = '{"resp1":"test"}';//resp.getContentText(); 
    var data = JSON.parse(json); 
    Logger.log(data) 
    return data; 
} 

和它給我正確的結果

enter image description here

我覺得問題在於UrlFetchApp,它必須拋出一個異常。你可以使用「try catch block」來確保它沒有拋出任何異常。

+0

我嘗試try..catch並沒有任何異常出現..一切似乎只是好的,但回調沒有共鳴。 –

+0

您正在使用有界的HTML文件?如果不是這樣,它將永遠不會工作。 – Shiva

+0

當然,我正在使用有界的HTML文件。 –