[英]How can i use jsp in javascript?
我有一個與我的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>
我以為這可以用,但不幸的是沒有用。 頁面加載時,我在控制台日志中收到以下消息。
“未捕獲的SyntaxError:意外的令牌|”
如果我點擊按鈕,它說
“未捕獲的ReferenceError:zoek未定義”
我希望你能幫助我。
您不能在JavaScript文件中使用JSP指令,因為JSP編譯是在服務器上而不是在客戶端上完成的。 JavaScript文件按原樣提供。
如果必須通過JavaScript文件訪問服務器中設置的某些內容,則一個“丑陋”的解決方法是在JSP中添加<script>
標記並聲明var myVar = <% test(out); %>;
var myVar = <% test(out); %>;
。 然后在您的JavaScript文件中使用myVar
。 但是請注意文檔和JavaScript的加載順序。
<script>var myVar = <% test(out); %>;</script>
我不推薦這種方法,而是通過REST API通過使用jQuery的AJAX調用(例如, http://api.jquery.com/jquery.getjson/ )通過REST API異步獲取數據。
您應該使用JSP表達式而不是腳本。 另外,為您的方法使用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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.