我正在编写 jquery 代码并通过它在 jsp 页面上调用 JavaScript 函数。
这是jquery函数
$(function () {
$('#defaultCountdown').countdown({until: $.countdown('//SomeTime'),onExpiry: liftOff});
});
liftOff 是一个 JavaScript 方法,在指定时间到期后调用。
这是 JavaScript 函数
<script>
function liftOff() {
alert("Before Delete");
<% DAO_Object.deleteRecord(ID);%>
alert("After Delete");
}
</script>
现在问题是 <% DAO_Object.deleteRecord(ID);%>
行在函数调用之前执行,并且数据库中的记录被删除。函数调用后警报语句正确执行。
我调用deleteRecord
吗?方法错误?
最佳答案
您正在将服务器端 JSP 逻辑与客户端 JavaScript 逻辑混合在一起。
<% %>
之间的一切当处理请求时,它在 servlet 上运行,因此当您在浏览器中收到响应时,该记录已被删除。如果您使用 Chrome DevTools 查看在浏览器中收到的 HTML/JS或类似的工具,您会发现 alert(...)
之间没有任何内容来电。
您的解决方案是 setup a route处理 deleteRecord()
在服务器端,并将其命名为 via AJAX在你的liftOff()
方法。所以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");
}
});
}
关于javascript - 如何通过javascript函数调用DAO方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45226665/