gpt4 book ai didi

javascript - 如何使用 ScriptEngine 从 Java 调用 ajax 来调用 javascript 函数?

转载 作者:行者123 更新时间:2023-12-02 10:32:40 33 4
gpt4 key购买 nike

我收到以下异常:jdk.nashorn.internal.runtime.ECMAException:ReferenceError:“$”未定义

但是我怎样才能让 jquery 可用于 javascript 函数呢?

以下是我的代码: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:

function ajaxMethod(){
$.ajax({
dataType: "json",
type: "GET",
cache: false,
url: 'myurl',
success: function (data) {
console.log(data);
}
});
}

最佳答案

简而言之,你不能!

虽然nashorn(java 8的javascript引擎)运行ECMAscript兼容的javascript,但是来自浏览器的隐式对象,如windowdocument 仍然不可用。 JQuery 或 $ 将其附加到 window 对象,因此它将不起作用。使用其他方法在 java 中发出异步 http 请求。

关于javascript - 如何使用 ScriptEngine 从 Java 调用 ajax 来调用 javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53514547/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com