【问题标题】:How to call a DAO method through a javascript function? [duplicate]如何通过 javascript 函数调用 DAO 方法? [复制]
【发布时间】:2017-12-26 20:33:19
【问题描述】:

我正在编写一个 jquery 代码并通过它在 jsp 页面上调用一个 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>

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

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

【问题讨论】:

标签: javascript java jquery database jsp


【解决方案1】:

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

&lt;% %&gt; 之间的所有内容在处理请求时都会在您的 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");
    }
  });
}

【讨论】:

  • 那么在函数调用后调用DAO方法应该怎么解决???
  • @NikhilPatil HTTP 请求 DELETE /path/to/resource/{id}.
  • @chrylis 谢谢。我试图解释你将如何真正做到这一点。希望对您有所帮助。
  • 我强烈建议您用正确的 HTTP 动词替换 path hack。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 1970-01-01
  • 2016-01-08
  • 2019-07-06
  • 1970-01-01
  • 2016-10-03
  • 2015-06-01
相关资源
最近更新 更多