javascript - 根据用户点击的内容重定向到带有 id 的 url
问题描述
我已经阅读了其他解决方案,但没有一个有帮助。所以这个想法是,用户发送消息,这些消息有回复,以查看/reply/<message_id>
当用户单击超链接时将用户重定向到的回复。我在下面附上了相关代码。
应用程序.py:
@app.route('/reply/<message_id>')
def reply(message_id):
return render_template('reply.html', message_id = message_id)
索引.html:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
<script type="text/javascript">
var socket = io.connect('http://' + document.domain + ':' + location.port);
var message_id = 0 ;
socket.on( 'connect', function() {
socket.emit( 'my event', {
data: 'User Connected'
} )
var form = $( 'form' ).on( 'submit', function( e ) {
message_id++
e.preventDefault()
let user_input = $( 'input.message' ).val()
socket.emit( 'my event', {
message_id : message_id,
message : user_input
} )
$( 'input.message' ).val( '' ).focus()
} )
} )
console.log("we are before the method,a nd mid is " + mid + " of type " + typeof mid)
socket.on( 'my response', function( msg ) {
console.log( msg )
if( typeof msg.message_id !== 'undefined' ) {
$( 'h3' ).remove()
console.log("msg.message_id is " + msg.message_id + typeof msg.message_id)
var mid = msg.message_id
console.log("we are before the method,a nd mid is " + mid + " of type " + typeof mid)
$( 'div.message_holder' ).append( '<div>'+mid+' '+msg.message+' <a href="{{ url_for('reply', message_id='X') }}"'.replace('X', mid)'>reply</a></div>' ))
}
})
</script>
回复.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>The reply </title>
</head>
<body>
<h1>Hello, your message id was {{ message_id }}!</h1>
</body>
</html>
目前发生的事情是,当我单击reply
它时,它会将我重定向到/reply/
然后说找不到。我希望它能够将我重定向到/reply/2
我点击的任何消息 ID。谢谢你的帮助
解决方案
假设mid
是一个 javascript 变量,您不能将它与 Jinja 代码混合使用。Jinja 渲染将解释mid
为 Python 变量,在您的情况下,该变量在渲染时尚未设置。
要解决此问题,请将变量移出 Jinja 代码。为了保持url_for
工作,您仍然需要为message_id
. 例如:
...' <a href="{{ url_for('reply', message_id='X') }}"'.replace('X', mid) + '>...'
推荐阅读
- java - Spring MVC - 在 DispatcherServlet 中找不到 HTTP 请求的映射
- git - 在 github 桌面上提交更改错误
- c# - ?wsdl 不起作用,即使使用 HttpGetEnabled
- javascript - Chrome 和 Firefox 不记得用户会话
- java - 当数据如下所示时如何从改造中获取数据
- pytorch - 如何在 pytorch 的维度上选择单个索引?
- c - fun() 的时间复杂度是多少?
- java - 使用正则表达式从成分字符串中解析数字信息
- json - 让 jq 返回数组中元素的索引号
- javascript - 如何将内线球员转化为对象?