[英]How can I call javascript function, having ajax call from Java using ScriptEngine?
I am getting following exception: jdk.nashorn.internal.runtime.ECMAException: ReferenceError: "$" is not defined 我收到以下异常:jdk.nashorn.internal.runtime.ECMAException:ReferenceError:未定义“ $”
But how can I have jquery available for the javascript function? 但是,如何使jQuery可用于javascript函数?
Following is my code: Java code: 以下是我的代码:Java代码:
@RequestMapping(value={"/callAjax"}, method={RequestMethod.POST, RequestMethod.GET})
public String callAjax(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
logger.info("request came to /callAjax");
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
InputStream fis = AjaxRequestController.class.getResourceAsStream("path to my js file");
InputStreamReader fileReader = new InputStreamReader(fis);
engine.eval(fileReader);
Invocable inv = (Invocable) engine;
inv.invokeFunction("ajaxMethod");
return null;
}
Javascript: 使用Javascript:
function ajaxMethod(){
$.ajax({
dataType: "json",
type: "GET",
cache: false,
url: 'myurl',
success: function (data) {
console.log(data);
}
});
}
In short, you can't! 简而言之,你不能!
Although nashorn
(java 8's javascript engine) runs ECMAscript
compliant javascript, but implicit objects from browsers like window
, document
are still not available. 尽管
nashorn
(Java 8的JavaScript引擎)运行与ECMAscript
兼容的javascript,但是诸如window
, document
类的浏览器中的隐式对象仍然不可用。 JQuery or $
, attaches it to window
object hence it will not work. jQuery或
$
,将其附加到window
对象,因此它将不起作用。 Use other ways for making async http requests in java. 使用其他方式在Java中发出异步http请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.