2016-12-22 105 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文件。 –