2017-03-28 13 views
0

私はJava EE Webアプリケーションを開発していて、jsも使用する必要があります.JPページには2つのボタンがあります:1つはupVoteとdownVoteです。最初にボタンを '$ {upVote}'にしたい同じユーザーが2回目にクリックしたときに、クリックして '$ {downVote}'を呼び出します。 プロセスの論理は、各ユーザーが質問ごとに1回投票できることを保証することです。しかし、なぜ私は望みどおりに動作しているのかわかりません。このコードが動作しないのはなぜですか(js関数)?

だから、私はthis.All答えを助ける必要があります。

マイコード:

<c:url var="User" value="/AQ/User"> 
     <c:param name="answerUserId" value="${question.USERID}" /> 
    </c:url> 
    <c:url var="Question" value="/AQ/UpdateQuestion"> 
     <c:param name="questionId" value="${question.ID}" /> 
    </c:url> 
    <c:url var="upVote" value="/AQ/UpVoteQuestion"> 
     <c:param name="questionId" value="${question.ID}" /> 
     <c:param name="qUserId" value="${question.USERID}"/> 
    </c:url> 
    <c:url var="downVote" value="/AQ/DownVoteQuestion"> 
     <c:param name="questionId" value="${question.ID}" /> 
     <c:param name="qUserId" value="${question.USERID}"/> 
    </c:url> 

<script type="text/javascript"> 
    var voteCounter = 0; 
    var votedQuestion = 0; 

    function control() {  

     if('${sessionScope[userId]}' <= 0){window.location.href='SignIn'} 
     else if(voteCounter >= 1 && votedQuestion == '${question.ID}') {window.location='${downVote}';} 
     else{ 
      voteCounter++; 
      votedQuestion = '${question.ID}'; 
      window.location='${upVote}'; 
      return false; 
     } 
    } 

    function reverse() { 
     if('${sessionScope[userId]}' <= 0){window.location.href='SignIn'} 
     else if(voteCounter >= 1 && votedQuestion == '${question.ID}') {window.location='${upVote}';} 
     else{ 
      voteCounter++; 
      votedQuestion = '${question.ID}'; 
      window.location='${downVote}'; 
      return false; 
     } 
    } 
</script> 

そして、私のボタンがあります:

<pre style="max-width: 35px; margin-right: 10px;"> 

       <input class="vote-img" type="image" 
        src="${pageContext.request.contextPath}/resources/images/upVote.png" 
        id="vote" onclick="control()"/> 
       <br> 
       <label style="float: left; margin-left: 18px;"><c:out value="${question.VOTE }" /></label> 
       <input class="vote-img" type="image" 
        src="${pageContext.request.contextPath}/resources/images/downVote.png" 
        id="vote" onclick="reverse()"/> 
</pre> 
+0

これは何をする予定ですか?代わりに何が起こるのですか?ブラウザ**の開発者**ツールコンソールのエラー? –

+0

いいえ、エラーはありませんが機能は欲望として機能していません。この場合、私は複数のupVoteまたはdownVoteを行うことができます。質問ごとに1回だけしたいです。 –

+0

入力imgタグを一度置き換えて投票した場合は、投票機能がキャストされているかどうかをチェックしてください。キャストされている場合は、逆にします。 –

答えて

0

window.locationのは、あなたのjsが再びロードされている意味のブラウザとvoteCounter == 0たびにリフレッシュされます。

+0

お返事ありがとうございますが、私はそれを修正する方法について考えていますか? –

+0

より良いアプローチは、要求またはセッションスコープを使用してjspに渡すことによって、サーバーが投票を追跡することです。 – foa

+0

さて、実際にはSpring MVCプロジェクト、upVoteと他の呼び出しSpringメソッドですが、Springコントローラからの投票を制御できないという問題は、何度も投票をしたいときにユーザーをブロックする必要があります。 –

関連する問題