Jquery upvote 插件禁止访问者投票
Jquery upvote plugin disable voting for visitors
我想禁用对访问者的投票或回滚到之前的状态。
为了实现这一点,我想将用户 ID 传递给 jquery upvote 插件。如果我将一个 link 元素添加到 <div id="comment-1">
其中有一个 class 名称 userid
我应该能够将 userid
变量传递给 Jquery upvote 插件.但是这次它破坏了网站设计。
我的第二种方法是添加点击事件。但我认为它被调用了两次。
将用户定义的变量传递给 jquery upvote 插件的正确方法是什么。
我想做的是像 SO 一样禁止匿名用户对帖子进行投票。
<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/upvote@1.1.1/lib/jquery.upvote.css">
</head>
<body>
<div id="comment-1" class="upvote">
<a class="upvote" title="This idea is helpful"></a>
<span class="count">5</span>
<a class="downvote"></a>
<a class="star starred"></a>
</div>
<div id="message"></div>
这是javascript部分。
<script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script>
<script src="https://cdn.jsdelivr.net/npm/upvote@1.1.1/lib/jquery.upvote.js"></script>
<script>
$(function() {
var userid = 0;
var visitor = "{{ visitor }}";
var callback = function(data) {
$.post({
url: '/vote',
data: JSON.stringify({ id: data.id, up: data.upvoted, userid: userid,
down: data.downvoted, count: data.count, star: data.starred }),
contentType: "application/json",
success: function(response) {
if (response == 'visitor') {
alert("You should register to vote posts")
}
console.log(response);
}
});
};
$('#comment-1').upvote({id: 1, callback: callback});
if (visitor) {
alert("You should register to vote on posts");
}
});
</script>
</body>
</html>
voting.py
from flask import Flask, render_template, request, url_for, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return render_template('voting.html')
@app.route('/vote', methods=['POST'])
def vote():
data = request.get_json()
result = str(data)
print("userid", data['userid'])
if (data['userid'] == 0):
return ('visitor')
print (result)
return result
if __name__ == "__main__":
app.run(debug=True)
https://jsfiddle.net/54ytp9ee/
更新: 尽管 downvoters 我应该能够找到解决方案。现在它按预期工作了。
尽管 downvoters 我应该能够找到解决方案。这是一个可行的解决方案。
voting.html
<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/upvote@1.1.1/lib/jquery.upvote.css">
</head>
<body>
<div id="comment-1" class="upvote">
<a class="upvote" title="I like this idea"></a>
<span class="count">5</span>
<a class="downvote"></a>
<a class="star starred"></a>
</div>
<div id="message"></div>
javascript 部分:
<script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script>
<script src="https://cdn.jsdelivr.net/npm/upvote@1.1.1/lib/jquery.upvote.js"></script>
<script>
$(function() {
var userid = 0;
var callback = function(data) {
$.post({
url: '/vote',
data: JSON.stringify({ id : data.id, up: data.upvoted, userid: userid,
down : data.downvoted, count : data.count, star : data.starred }),
contentType: "application/json",
success: function(response) {
console.log('Response ', response);
if (response.visitor) {
alert ('Please log in to vote');
var counter = response.count;
$('#comment-1').upvote({count: counter, upvoted: 0, downvoted:0, starred: 0, id: 1, callback: callback});
location.reload();
}
}
});
};
$('#comment-1').upvote({id: 1, callback: callback});
});
</script>
</body>
</html>
voting.py
from flask import Flask, render_template, request, url_for, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return render_template('voting.html')
@app.route('/vote', methods=['POST'])
def vote():
data = request.get_json()
result = str(data)
if (data['userid'] == 0):
if (data['up']):
data['count'] = data['count'] - 1
if (data['down']):
data['count'] = data['count'] + 1
return jsonify({'visitor' : True, 'count' : data['count'] }), 200, {'ContentType':'application/json'}
return result
if __name__ == "__main__":
app.run(debug=True)
我想禁用对访问者的投票或回滚到之前的状态。
为了实现这一点,我想将用户 ID 传递给 jquery upvote 插件。如果我将一个 link 元素添加到 <div id="comment-1">
其中有一个 class 名称 userid
我应该能够将 userid
变量传递给 Jquery upvote 插件.但是这次它破坏了网站设计。
我的第二种方法是添加点击事件。但我认为它被调用了两次。
将用户定义的变量传递给 jquery upvote 插件的正确方法是什么。
我想做的是像 SO 一样禁止匿名用户对帖子进行投票。
<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/upvote@1.1.1/lib/jquery.upvote.css">
</head>
<body>
<div id="comment-1" class="upvote">
<a class="upvote" title="This idea is helpful"></a>
<span class="count">5</span>
<a class="downvote"></a>
<a class="star starred"></a>
</div>
<div id="message"></div>
这是javascript部分。
<script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script>
<script src="https://cdn.jsdelivr.net/npm/upvote@1.1.1/lib/jquery.upvote.js"></script>
<script>
$(function() {
var userid = 0;
var visitor = "{{ visitor }}";
var callback = function(data) {
$.post({
url: '/vote',
data: JSON.stringify({ id: data.id, up: data.upvoted, userid: userid,
down: data.downvoted, count: data.count, star: data.starred }),
contentType: "application/json",
success: function(response) {
if (response == 'visitor') {
alert("You should register to vote posts")
}
console.log(response);
}
});
};
$('#comment-1').upvote({id: 1, callback: callback});
if (visitor) {
alert("You should register to vote on posts");
}
});
</script>
</body>
</html>
voting.py
from flask import Flask, render_template, request, url_for, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return render_template('voting.html')
@app.route('/vote', methods=['POST'])
def vote():
data = request.get_json()
result = str(data)
print("userid", data['userid'])
if (data['userid'] == 0):
return ('visitor')
print (result)
return result
if __name__ == "__main__":
app.run(debug=True)
https://jsfiddle.net/54ytp9ee/
更新: 尽管 downvoters 我应该能够找到解决方案。现在它按预期工作了。
尽管 downvoters 我应该能够找到解决方案。这是一个可行的解决方案。
voting.html
<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/upvote@1.1.1/lib/jquery.upvote.css">
</head>
<body>
<div id="comment-1" class="upvote">
<a class="upvote" title="I like this idea"></a>
<span class="count">5</span>
<a class="downvote"></a>
<a class="star starred"></a>
</div>
<div id="message"></div>
javascript 部分:
<script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script>
<script src="https://cdn.jsdelivr.net/npm/upvote@1.1.1/lib/jquery.upvote.js"></script>
<script>
$(function() {
var userid = 0;
var callback = function(data) {
$.post({
url: '/vote',
data: JSON.stringify({ id : data.id, up: data.upvoted, userid: userid,
down : data.downvoted, count : data.count, star : data.starred }),
contentType: "application/json",
success: function(response) {
console.log('Response ', response);
if (response.visitor) {
alert ('Please log in to vote');
var counter = response.count;
$('#comment-1').upvote({count: counter, upvoted: 0, downvoted:0, starred: 0, id: 1, callback: callback});
location.reload();
}
}
});
};
$('#comment-1').upvote({id: 1, callback: callback});
});
</script>
</body>
</html>
voting.py
from flask import Flask, render_template, request, url_for, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return render_template('voting.html')
@app.route('/vote', methods=['POST'])
def vote():
data = request.get_json()
result = str(data)
if (data['userid'] == 0):
if (data['up']):
data['count'] = data['count'] - 1
if (data['down']):
data['count'] = data['count'] + 1
return jsonify({'visitor' : True, 'count' : data['count'] }), 200, {'ContentType':'application/json'}
return result
if __name__ == "__main__":
app.run(debug=True)