簡體   English   中英

如何在JavaScript中使用JSP?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM