2015-05-04 132 views
-3

我有這個代碼如下問題:的JavaScript忽略JSP代碼

<center><button onclick="agregartabla_materias()">Agregar nueva tabla</button></center> 
<script> 
    function agregartabla_materias() { 
    <% 
      String sql = "create table if not exists materias (" 
        + "codigo decimal (8)," 
        + "nombre varchar (40)," 
        + "turno text []," 
        + "ref_profesor varchar (10)" 
        + ");"; 
      Statement myStmt = con.getConexion().createStatement(); 
      myStmt.executeUpdate(sql); 
    %> 
    } 
</script> 

我希望有一個按鈕,點擊後,應該將SQL查詢發送到數據庫。當我打開頁面時,查詢已經發送,無需點擊按鈕。爲了測試一些事情,我刪除了數據庫中的表並嘗試點擊按鈕,但沒有創建表。所以它就像javascript代碼是空的,並且<%%超出它,所以它總是在我重新加載頁面時調用,而不是當我單擊按鈕時調用。

感謝您的建議。

+0

。你需要有一個後端命令,並將它附加到按鈕上 –

+0

我甚至不知道前端是什麼:D我的老師告訴我創建一個帶有按鈕的網站,當點擊它時,創建表格,插入數據,創建外部和主鍵等 – mambo

+1

閱讀更多然後做你的功課:P –

回答

1

當JSP編譯執行的小腳本 - 這就是爲什麼該代碼在每個重載執行。

JavaScript不包括它,因爲代碼被執行,不打印任何東西,方法仍然是空的。

使用scriptlets不是好的方法,但如果你想這樣做,你可以創建另一個jsp來執行它並用javascript(或ajax)調用它。這是前端 - 呼叫後端 - 返回結果到最後。 Javascript是前端(與客戶端一起執行),您要執行的代碼是後端(在服務器上執行)。客戶端(瀏覽器)無法連接到您的數據庫並執行sqls,它只能將請求發送到後端,後端應該完成這項工作。

嘗試使用兩個jsp頁面。

button.jsp:

<center><a href="executeSql.jsp">Agregar nueva tabla</a></center> 

executeSql.jsp:

<script> 
    <% 
     String sql = "create table if not exists materias (" 
       + "codigo decimal (8)," 
       + "nombre varchar (40)," 
       + "turno text []," 
       + "ref_profesor varchar (10)" 
       + ");"; 
     Statement myStmt = con.getConexion().createStatement(); 
     myStmt.executeUpdate(sql); 
%> 
window.location="button.jsp"; 

這是一個非常壞的榜樣,但能正常工作。這樣,點擊第一個jsp(button.jsp)將調用第二個jsp。後端代碼將執行,並且它將重定向到無法在前端工作的button.jsp

+0

謝謝Veselin。我改變了這樣的代碼,但它不工作,一定是錯誤的:D以及我不能在這裏添加代碼 – mambo

+0

你不能用這麼簡單的代碼來實現它,你需要在網頁中調用服務器(jsp頁面)和服務器來做一些事情。在你的例子中,你可以用兩個JSP頁面來做 –

+0

onclick =「agregartabla_materias.jsp」是不對的?然後我創建了另一個叫做這樣的jsp文件,並且圍繞着<% %> – mambo

-1

<按鈕的onclick = 「agregartabla_materias();」>

嘗試這種方式。並確定使用哪種頁面語言。

希望它可能會有所幫助

+0

感謝您的時間!同樣的問題,頁面加載時調用代碼並點擊按鈕不會創建表格:( – mambo

+0

您正在使用哪種頁面開發語言? 嘗試在主體中使用scriptlet進行代碼並僅執行功能區域中的查詢** <%= %> ** –

+0

再次感謝,我使用HTML – mambo