2016-11-08 7 views
0

私は投票システムをjQuery AJAXでやっています。 div(投票時)をクリックすると、中間ファイル(この場合はup_vote.php)にデータが送信され、divが新しいデータで更新されます。これは完全に動作し、結果= 2(変数+ 1)を与えます。投票システムとjQuery AJAX

第2フェーズでは、投票結果を別の部門(別のサイトの#results)に提示しようとしています。問題は、divを更新しますが、結果が不正確で、2の代わりに1を示します(変数が送信されなかったか、結果を受け取る前にdivがリフレッシュされたように見えます)。

より多くの経験を持つ誰かが私に説明することができます私は

<?php 
    $id_field = $_POST['id_field']; 
    echo 'Result='; 
    echo $id_field + 1; 
?> 

up_vote.php

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<link type="text/css" rel="stylesheet" href="style.css" /> 
<script type="text/javascript" src="myjquery.js"></script> 
</head> 
<body> 
    <script type="text/javascript"> 
     $(function(){ 
      $(".n_vote").click(function() { 
       var id_field = $(this).attr("id"); 
       var parent = $(this); 

       $.ajax({ 
        type: "POST", 
        url: "up_vote.php", 
        data: { 
         id_field: id_field, 
         name: name 
        }, 
        cache: false, 
        success: function(html) { 
         //Show the results in the same div 
         parent.html(html); 
         //Show the results in another div, #results 
         $("#results").load("up_vote.php"); 
        } 
       }); 
       return false; 
      }); 
     }); 
    </script> 

    <div class="vote_system"> 
     <div class="n_vote" name="up" id="1">Clic here to show the result</div> 
    </div> 
    <!-- Correct result=2 --> 
    ______________________________ 

    <br> 
    Show the result in a another div: 
    <br> 
    <div class="results" id="results"> 
    </div> 
    <!-- Incorrect result=1 --> 
</body> 
</html> 

Index.htmlと

...

を誰もが試してみたい場合には、完全なコードを残します2番目のdivに正しい結果が表示されないのはなぜですか?何が起こり、どのように解決するのですか?

答えて

2

$("#results").load("up_vote.php");の代わりに、up_vote.phpをロードします(get_とnoパラメータを使用してURLをロードするため、明らかに$ id_fieldを設定して空にします)ので、2ではなく1が得られるように普通です。
サーバから返された同じ成功htmlを使用して、第2 divに表示するようにしました。$("#results").html(html);

関連する問題