2015-05-04 105 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