2017-11-17 1 views
-3

방문자에 대한 투표를 사용하지 않거나 이전 상태로 되돌리려 고합니다.Jquery upvote plugin 방문자에 대한 투표 사용 중지

이것을 달성하려면 jvery upvote 플러그인에 사용자 아이디를 전달하고 싶습니다. 클래스 이름이 userid<div id="comment-1">에 링크 요소를 추가하면 userid 변수를 Jquery upvote 플러그인에 전달할 수 있습니다. 그러나 이번에는 사이트 설계가 중단되었습니다.

두 번째 방법은 클릭 이벤트를 추가하는 것입니다. 하지만 두 번 부름 받았다고 생각합니다.

jquery upvote plugin에 사용자 정의 변수를 전달하는 적절한 방법이 될 수 있습니다.

내가하고 싶은 것은 익명 사용자가 SO와 같이 게시물에 투표를 사용 중지하는 것입니다.

<html> 
    <head> 
     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/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/[email protected]/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 에도 불구하고. 이제 예상대로 작동합니다.

+3

:'http://yourserver.com/vote '클라이언트 측이 아니다. –

답변

0

downvoters에도 불구하고 해결책을 찾을 수 있어야합니다. 여기에 효과적인 해결책이 있습니다.

voting.html

<html> 
    <head> 
     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/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> 

자바 스크립트 부분 : 작업이 여기에 수행해야

 <script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script> 
     <script src="https://cdn.jsdelivr.net/npm/[email protected]/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) 
관련 문제