javascript - 如何使用Javascript将具有特殊字符的多行字符串分配给HTML textarea
问题描述
在 Flask 中,我呈现 homepage.html 并将 homepage.html 上的相同文本发回 HTML textarea textid
@app.route('/',methods = ['GET', 'POST'])
def result():
if request.method == 'POST':
userdata = request.form['Name']
return render_template("homepage.html", userdata= userdata)
在 HTML 主页.html
<script>
var fillinuserinput = function(){
document.getElementById("textid").value = "{{ userdata }}"
}
</script>
当 userdata(html textarea value) 是没有特殊字符的单行字符串时,它可以工作。但是,当它带有特殊字符的多行时,它会失败。
以下是userdata(html textarea值)中的前文本(文本是python代码):
#!/usr/bin/env python
导入字符串
班次 = 3
choice = raw_input("你想编码还是解码?")
下面是从 Flask 返回的用户数据:
document.getElementById("textid").value = " #!/usr/bin/env python
导入字符串
班次 = 3
choice = raw_input( 4;你想编码还是解码? 4;)
返回的数据我得到无效或意外的令牌加上我得到 "(我确实将 utf-8 放在客户端和服务器端,不确定这是否重要)
任何帮助将不胜感激。
解决方案
我对 Flask 不太熟悉,但大多数模板语言会将插值输入视为不安全的,并且会转义您提供的任何文本。如果您想避免逃避输入,请查看http://flask.pocoo.org/docs/0.12/templating/
根据该页面,有几个选项:
- 在 Python 代码中,将 HTML 字符串包装在标记对象中,然后再将其传递给模板。这通常是推荐的方式。
- 在模板中,使用 |safe 过滤器将字符串显式标记为安全 HTML ({{ myvariable|safe }})
- 暂时完全禁用自动转义系统。
要在模板中禁用自动转义系统,您可以使用 {% autoescape %} 块:
{% autoescape false %}
<p>autoescaping is disabled here
<p>{{ will_not_be_escaped }}
{% endautoescape %}
另一个相关问题是,我假设当您说您有多行输入时,它使用的是换行符。这些在 HTML 中没有意义,因此您不会在输出中看到换行符。您需要用 <br> 标签替换换行符才能真正获取它们。那,结合将字符串标记为“安全”应该可以得到你正在寻找的结果。请记住,您需要提前清理输入,然后用 <br> 标记替换换行符。
推荐阅读
- python - Matplot/Pandas X 轴未显示所有值
- c++ - 按下按钮时向文件添加行
- r - 如何在小标题上解开 which.min
- c - C中多维数组的存储顺序
- java - Spring Boot 批处理中的 StoredProcedureItemReader
- php - 如何基于一个文件处理多个文件?(GIT)
- braintree - Braintree/PayPal 版本 3 升级问题
- soap - Yii 1.1 - SoapServer::SoapServer(url): 无法打开流
- c# - TryParse() 短路和输出变量可靠吗?
- java - 使用servelt java将html日期值存储到mysql数据库时出现NullPointerException