如何通过javascript函数调用DAO方法?

时间:2017-07-20 23:22:33

标签: javascript java jquery database jsp

我正在jsp页面上编写jquery代码并通过它调用JavaScript函数。

这是jquery函数

$(function () {

    $('#defaultCountdown').countdown({until: $.countdown('//SomeTime'),onExpiry: liftOff});

});

liftOff是一个javascript方法,在指定的时间到期后调用。

这是JavaScript函数

<script>
function liftOff() {

    alert("Before Delete");
    &lt;% DAO_Object.deleteRecord(ID);%&gt;
    alert("After Delete");

}

</script>

现在问题是,行<% DAO_Object.deleteRecord(ID);%>在函数调用之前执行,并且数据库中的记录被删除。在函数调用之后,警报语句正确执行。

我是否错误地调用了deleteRecord方法?

1 个答案:

答案 0 :(得分:3)

您正在将服务器端JSP逻辑与客户端JavaScript逻辑混合在一起。

<% %>之间的所有内容在处理请求时都会在您的servlet上运行,因此当您在浏览器中获得响应时,该记录已被删除。如果您使用Chrome DevTools或类似工具查看您在浏览器中收到的HTML / JS,您会发现这些alert(...)来电之间没有任何内容。

此处的解决方案是setup a route处理服务器端的deleteRecord(),并在liftOff()方法中将其称为via AJAX。所以liftOff()看起来像这样:

// assuming `id` is a string here
function liftOff(id) {

  alert("Before Delete");

  // You'll have to setup this endpoint to run 
  // your `DAO_Object.deleteRecord(ID);` code 
  // in your JSP code.

  $.get("/delete/my/record/" + id, {
    error: function(e){
      // some kind of error occurred in making the request
    },
    success: function(resp){
      // `resp` is the response from the server
      alert("After Delete");
    }
  });
}