我遇到以下异常: jdk.nashorn.internal.runtime.ECMAException:ReferenceError:“ $”未定义
但是如何为JavaScript函数提供jquery?
以下是我的代码: 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);
}
});
}
答案 0 :(得分:1)
简而言之,你不能!
尽管nashorn
(Java 8的JavaScript引擎)运行ECMAscript
兼容的javascript,但是来自window
,document
等浏览器的隐式对象仍然不可用。 jQuery或$
,将其附加到window
对象,因此它将不起作用。使用其他方式在Java中发出异步http请求。