我有一个与我的neo4j数据库建立连接的jsp文件。它还可以在网页上打印查询。这是我的代码:
<%!
public void test(JspWriter out)
throws IOException
{
GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase("C:\\Users\\User\\Documents\\Neo4j\\default.graphdb" );
ExecutionEngine engine = new ExecutionEngine(graphDb, StringLogger.SYSTEM);
String query = "MATCH (name {name: 'Tom Hanks'}) RETURN name";
ExecutionResult result = engine.execute(query);
out.println(result.dumpToString());
graphDb.shutdown();
}
%>
<html>
<head><title>Test</title></head>
<body>
<input type="text" id="userInput">
<button onclick="zoek()">Zoek</button>
<p id="demo"><% test(out); %></p>
</body>
</html>
上面的代码运行正常。它向我展示了有关'汤姆汉克斯'的信息。 但是,当我点击按钮时,我想收到这些信息。所以我使用了java脚本:
<script LANGUAGE="JavaScript">
function zoek(){
document.getElementById("demo").innerHTML = <% test(out); %>;
}
</script>
我认为这会奏效,但遗憾的是它没有。在控制台日志中,我在页面加载时收到以下消息。
“Uncaught SyntaxError:Unexpected token |”
如果我点击按钮就会显示
“未捕获的ReferenceError:未定义zoek”
我希望你能帮助我。
答案 0 :(得分:0)
您不能在JavaScript文件中使用JSP指令,因为JSP编译是在服务器上完成的,而不是在客户端上完成的。 JavaScript文件按原样提供。
如果您必须在JavaScript文件中访问服务器中的某些内容集,那么一个“丑陋”的解决方法是在JSP中添加<script>
标记并声明var myVar = <% test(out); %>;
。然后在JavaScript文件中使用myVar
。但请注意文档和JavaScript的加载顺序。
<script>var myVar = <% test(out); %>;</script>
我不推荐这种方法,而是通过使用jQuery(http://api.jquery.com/jquery.getjson/)的AJAX调用通过REST API异步获取数据。
答案 1 :(得分:0)
您应该使用JSP表达式而不是scriptlet。另外,为方法使用返回类型的String。请试试这个演示代码。为了测试,我为您的数据库代码替换了一个简单的String。
<%!
public String test(){
return "Tom Hanks is an actor";
}
%>
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function zoek(){
alert("test");
document.getElementById("demo").innerHTML = "<%=test()%>";
}
</script>
</head>
<body>
<input type="text" id="userInput">
<button onClick="zoek()">Zoek</button>
<p id="demo"></p>
</body>
</html>