我有一个html页面,它需要创建的表单字面上如下:
<form action="/tasks/<%= allTasks.e[0].id %>/delete" method="POST">
<button class="deleteTask">Delete</button>
</form>
但是在使用jQuery的javascript文件中,我这样做
$(function(){
let myform=String("<form action='/tasks/<%= allTasks.e[0].id%>/delete' method='POST'>
<button>DELETE</button></form>");
$('span').each(function(){$(this).append(myform)});
})
它将显示Cannot POST /tasks/%3C%25=%20allTasks.e.id%20%25%253E/delete
原因是特殊字符%,<>被替换为这些数字。我如何才能防止这种情况发生?
谢谢!
发布于 2017-06-25 10:17:49
POST失败的原因不是因为特殊字符%
,<>
被替换了,而是因为服务器端模板的东西(<%= %>
)没有被替换。
您需要替换myForm
字符串中的<%= allTasks.e[0].id%>
才能使用实际的任务id。这意味着您的服务器端技术需要处理JavaScript文件内容,或者将带有<%= allTasks.e[0].id%>
内容的JavaScript代码移动到HTML模板文件。
HTTP POST请求应如下所示:
POST /tasks/33989/delete
不
POST /tasks/<%= allTasks.e[0].id%>/delete
顺便说一句,为了让请求更具RESTful色彩,最好使用HTTP方法DELETE
。
更新:如果javascript文件需要从后台获取任务id,有一个简单的方法:
<script>
元素。通过这种方式,当window.taskId = '<%= allTasks.e[0].id%>';
window.taskId = '77878';
window
对象中提取任务id:let actionURL = '/tasks/' + window.taskId + '/delete';
https://stackoverflow.com/questions/44742580
复制相似问题