问题
所以我编辑一个crud应用程序以在删除之前进行确认,我创建了一个javascript函数来执行此操作,但我在我的cmd和" show&#34中收到以下错误;页
错误:发送500("服务器错误")响应:ReferenceError:
C:\用户\米莎\文档\ intelligente-vraagbaak \意见\答案\ show.ejs:176
174 |如果(c){
175 |的console.log("完成&#34);
176 | window.location.href =" action / delete /<%= action.id%>"
177 | }
178 |
179 |否则{未定义操作
守则
这是删除应该发生的代码的一部分,
<td class="actions" style="display: block; margin: 0 auto">
<a href="/actionbrand/create/<%= action.id %>"
class="btn btn-sm btn-icon btn-pure btn-default on-default"
data-toggle="tooltip"
data-original-title="Toevoegen"><i class="icon wb-plus" aria-hidden="true"></i></a>
<a href="/action/show/<%= action.id %>"
class="btn btn-sm btn-icon btn-pure btn-default on-editing"
data-toggle="tooltip"
data-original-title="Bekijk"><i class="icon wb-eye" aria-hidden="true"></i></a>
<a href="/action/edit/<%= action.id %>"
class="btn btn-sm btn-icon btn-pure btn-default on-default"
data-toggle="tooltip"
data-original-title="Bewerk"><i class="icon wb-edit" aria-hidden="true"></i></a>
<form id="deleteAction" action="javascript:Delete()" method="POST">
<button type="submit"
class="btn btn-sm btn-icon btn-pure btn-default on-default"
data-toggle="tooltip"
data-original-title="Verwijder"><i class="icon wb-trash" aria-hidden="true"></i>
</button>
</form>
</td>
</tr>
<% }) %>
</tbody>
</table>
</div>
</div>
</div>
</div>
<script>
function Delete(){
let c = confirm('U staat op het punt een actie te verwijderen, klik op "ok" om hier mee door te gaan');
if (c){
console.log("done");
window.location.href = "action/delete/<%=action.id %>"
}
else{
console.log("failed")
window.location.href = "/answer/show/<%= answer.id %>"
}
}
</script>
我不知道
我没有收到此错误,因为我在整个页面上使用变量操作并且没有任何错误,但是当我在我的函数中使用它时,我收到错误。我究竟做错了什么?任何帮助都会很好(对不起我的英语我不是母语人士)
在哪里&#34;行动&#34;来自
Action是我所有操作的别名,在<tr><td>...</td></tr>
<%- answer.actions.length === 0 ? "<tr><td>No results</td></tr>" : null %>
<% _.each(answer.actions, action => { %>
答案 0 :(得分:1)
@mjZac在他的评论中是正确的 - action
仅在你的循环中被定义,所以它在循环之外是未定义的。
您需要将操作(或仅action.id
)信息传递给您的方法。您设置的方式,我认为您可以通过将其作为参数添加到方法调用中来实现。
<% _.each(answer.actions, action => { %>
<td class="actions" style="display: block; margin: 0 auto">
<!-- some other stuff... -->
<form class="deleteAction" action="javascript:Delete(<%= action.id %>)" method="POST">
<button type="submit" class="btn btn-sm btn-icon btn-pure btn-default on-default" data-toggle="tooltip" data-original-title="Verwijder"><i class="icon wb-trash" aria-hidden="true"></i></button>
</form>
</td>
<% }) %>
<script>
function Delete(actionId){
let c = confirm('U staat op het punt een actie te verwijderen, klik op "ok" om hier mee door te gaan');
if (c){
console.log("done");
window.location.href = "action/delete/" + actionId;
}
}
</script>
总而言之,模板会将动作ID添加到每个Delete()
中的tr
方法调用中,然后脚本会使用该ID在纯javascript中生成它的url(不涉及模板标记)。