首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jquery append向html页面添加表单元素时的特殊字符

使用jquery append向html页面添加表单元素时的特殊字符
EN

Stack Overflow用户
提问于 2017-06-25 10:13:23
回答 1查看 220关注 0票数 0

我有一个html页面,它需要创建的表单字面上如下:

代码语言:javascript
运行
复制
<form action="/tasks/<%= allTasks.e[0].id %>/delete" method="POST">
        <button class="deleteTask">Delete</button>
</form>

但是在使用jQuery的javascript文件中,我这样做

代码语言: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

原因是特殊字符%,<>被替换为这些数字。我如何才能防止这种情况发生?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-06-25 10:17:49

POST失败的原因不是因为特殊字符%<>被替换了,而是因为服务器端模板的东西(<%= %>)没有被替换。

您需要替换myForm字符串中的<%= allTasks.e[0].id%>才能使用实际的任务id。这意味着您的服务器端技术需要处理JavaScript文件内容,或者将带有<%= allTasks.e[0].id%>内容的JavaScript代码移动到HTML模板文件。

HTTP POST请求应如下所示:

代码语言:javascript
运行
复制
POST /tasks/33989/delete

代码语言:javascript
运行
复制
POST /tasks/<%= allTasks.e[0].id%>/delete

顺便说一句,为了让请求更具RESTful色彩,最好使用HTTP方法DELETE

更新:如果javascript文件需要从后台获取任务id,有一个简单的方法:

  1. 在HTML模板文件中,创建一个<script>元素。
  2. 在上面的脚本元素中,将任务id数据存储在全局窗口对象中。

通过这种方式,当window.taskId = '<%= allTasks.e[0].id%>';

  • In在后台组装时,上面的代码将转换为:

window.taskId = '77878';

  • When jQuery需要发送Ajax请求,可以从window对象中提取任务id:

let actionURL = '/tasks/' + window.taskId + '/delete';

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44742580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档