您好我很困惑,如何从cordova.exec
获取返回类型。每次返回未定义的值。
我的Cordova版本是:3.5.0(最新)
我的目标是从html文件调用Java类。 java类处理一些数据,比如来自SOAP webservice和Java类的get数据,将一些数据返回给html / js,并且我可以借助Javascript / Jquery在html文件中绘制数据。
这是我的脚本。
从 Sample.html 我发送一个值(var value = SampleJavaClass.echo("Arg frm login");
)到 samplejavaclass.js 并且js调用本机Java类并添加一条消息返回实际消息。然后我想在 Sample.html 文件中获取数据并执行一些任务。
我想在这个类中处理一些数据。例如。致电soap webservice
public class SampleJavaClass extends CordovaPlugin {
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
}
@Override
public boolean execute(String action, JSONArray args,
final CallbackContext callbackContext) throws JSONException {
try {
if (action.equals("echo")) {
final String message = args.getString(0);
cordova.getActivity().runOnUiThread(new Runnable() {
public void run() {
String retMsg = "SUCCESS " + message;
callbackContext.sendPluginResult(new PluginResult(Status.OK, retMsg));
}
});
}
return true;
} catch (JSONException e) {
callbackContext.sendPluginResult(new PluginResult(
PluginResult.Status.JSON_EXCEPTION));
return false;
}
}
public void echo(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
//callbackContext.success("SUCCESS " + message);
String retMsg = "SUCCESS " + message;
callbackContext.sendPluginResult(new PluginResult(Status.OK, retMsg));
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
}
function SampleJavaClass() {
}
function nativePluginResultHandler(result) {
alert("SUCCESS: \r\n" + result);
}
function nativePluginErrorHandler(error) {
alert("ERROR: \r\n" + error);
}
SampleJavaClass.echo = function(arg) {
// var failureCallback = function() {
// console.log("Not able to retrive ");
// };
return cordova.exec(nativePluginResultHandler, nativePluginErrorHandler,
"SampleJavaClass", "echo", [ arg ]);
};
var value = SampleJavaClass.echo("Arg frm login");
alert("Return Value in login :: " + value);
在 simplejavaclass.js 中打印警报。这意味着它成功执行。但在 Sample.html 中,警告中显示的值为未定义。
如果我做错了,请告诉我一个出路。
谢谢
答案 0 :(得分:0)
在sample.html中,您将获得echo函数的返回值。这意味着,您的“值”实际上等于cordova.exec方法的返回值,而不是成功回调的响应,因此您的“值”变量未定义。