У меня следующее исключение: 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.info(data);
}
});
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Короче нельзя!
Хотя nashorn (движок javascript java 8) запускает javascript, совместимый с ECMAscript, неявные объекты из браузеров, таких как window, document, по-прежнему недоступны. JQuery или $ прикрепляет его к объекту window, поэтому он не будет работать. Используйте другие способы выполнения асинхронных HTTP-запросов в java.