2016-11-08 3 views
0

Я делаю систему голосования с jQuery AJAX. При нажатии на div (при голосовании) данные отправляются в промежуточный файл (в этом случае up_vote.php), а затем div обновляется новыми данными. Он отлично работает, давая результат = 2 (переменный плюс один).Система голосования с jQuery AJAX

На втором этапе я пытаюсь представить результат голосования в другом div (#results на другом сайте страницы). Проблема в том, что она обновляет div, но результат неверен, показывая 1 вместо 2 (похоже, что переменная не была отправлена, или div обновлен до получения результата).

Я оставляю полный код в случае, если кто-то хочет попробовать ...

index.html

<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> 

up_vote.php

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

Может кто-то с большим опытом объяснить мне почему второй div не показывает правильный результат? Что происходит и как его решить?

ответ

2

Вместо использования $("#results").load("up_vote.php");, загружающий up_vote.php (obviousely прохождение $ id_field не установлен и пустой, потому что вы загрузить URL через GET и без параметров), так что S нормально, что вы получили 1 вместо 2.
у вас есть использовать тот же успех html, возвращенный с сервера, чтобы показать его во втором div, например $("#results").html(html);