当我 post 使用 Pusher 并重新加载页面时,所有条目都消失了。怎么修? Python 烧瓶
When I post something with Pusher, and reload the page, all entries disappear. How to fix? Python Flask
这是我触发 Pusher 事件的地方。
@app.route('/post-question', methods=['POST'])
def add_question():
data_received = json.loads(request.data)
data = {
'id':'post-{}'.format(uuid.uuid4().hex),
'title':data_received['title'],
'question':data_received['content'],
'status': 'active',
'event_name': 'created'
}
pusher.trigger("CHANNEL", 'question-created', data)
return jsonify(data)
这是 Pusher 通道绑定:
<script>
function appendToList(data) {
const html = `
<div id="${data.id}">
<header>
<h1>${data.title}</h1>
</header>
<div>
<p>${data.question}</p>
</div>
</div> `
let list = document.querySelector('#post-list')
list.innerHTML += html
}
$(document).ready(() => {
$(document).on('click', "#submit", function(event) {
$.post({
url: '/post-question',
type: 'POST',
contentType: 'application/json;charset=UTF-8',
dataType: 'JSON',
data: JSON.stringify({'title': $("#question-title").val(), 'content': $("#question-content").val()}),
success : function(response) {
console.log(response);
},
error : function(xhr) {
console.log(xhr);
}
}).done(function(response) {
$("#question-form").reset()
})
})
})
Pusher.logToConsole = true;
const pusher = new Pusher('*', {
cluster: '*',
encrypted: true
});
const channel = pusher.subscribe('CHANNEL')
channel.bind('question-created', data => {
appendToList(data);
})
</script>
它正确地触发了事件,并实时正确地出现在另一个window中,但是由于某种原因,当我重新加载页面时,所有的post都消失了; post 也会在当前 window 上消失。
我认为我渲染 post 的方式可能有问题,但我不知道。有人知道如何解决这个问题吗?
提前致谢!
第一个评论是正确的。 Pusher 负责实时通信和新事件。要在每次页面(重新)加载时显示 old/existing 个帖子,您需要在您的应用中查询和呈现它们。您可以选择在服务器端或客户端执行该操作。
这是我触发 Pusher 事件的地方。
@app.route('/post-question', methods=['POST'])
def add_question():
data_received = json.loads(request.data)
data = {
'id':'post-{}'.format(uuid.uuid4().hex),
'title':data_received['title'],
'question':data_received['content'],
'status': 'active',
'event_name': 'created'
}
pusher.trigger("CHANNEL", 'question-created', data)
return jsonify(data)
这是 Pusher 通道绑定:
<script>
function appendToList(data) {
const html = `
<div id="${data.id}">
<header>
<h1>${data.title}</h1>
</header>
<div>
<p>${data.question}</p>
</div>
</div> `
let list = document.querySelector('#post-list')
list.innerHTML += html
}
$(document).ready(() => {
$(document).on('click', "#submit", function(event) {
$.post({
url: '/post-question',
type: 'POST',
contentType: 'application/json;charset=UTF-8',
dataType: 'JSON',
data: JSON.stringify({'title': $("#question-title").val(), 'content': $("#question-content").val()}),
success : function(response) {
console.log(response);
},
error : function(xhr) {
console.log(xhr);
}
}).done(function(response) {
$("#question-form").reset()
})
})
})
Pusher.logToConsole = true;
const pusher = new Pusher('*', {
cluster: '*',
encrypted: true
});
const channel = pusher.subscribe('CHANNEL')
channel.bind('question-created', data => {
appendToList(data);
})
</script>
它正确地触发了事件,并实时正确地出现在另一个window中,但是由于某种原因,当我重新加载页面时,所有的post都消失了; post 也会在当前 window 上消失。
我认为我渲染 post 的方式可能有问题,但我不知道。有人知道如何解决这个问题吗?
提前致谢!
第一个评论是正确的。 Pusher 负责实时通信和新事件。要在每次页面(重新)加载时显示 old/existing 个帖子,您需要在您的应用中查询和呈现它们。您可以选择在服务器端或客户端执行该操作。