ajax响应返回相同的值

时间:2014-03-29 04:22:41

标签: php jquery ajax

我正在尝试实现投票系统并且有一个while循环,我在其中显示来自数据库的投票结果。刚刚开始,我尝试将id作为投票按钮的值回显,然后通过ajax请求获取按钮的id以显示回来。请求正在通过,但无论我点击哪个按钮,它都会给我相同的ID。我在表中有4行,当我看到源页面时,我正确地看到每个按钮的值是1-4,但是当我点击按钮时它只返回最后一个id为4(我正在订购DESC)。有人可以帮忙吗?

 <div class="response"></div>    

 while($row = $result->fetch_assoc())
    {
     echo"<button value='".$row['id']."' class='btn btn-default test' href='javascript:void(0);' onclick='voteup();'>."$row['voteup']".</button>";
    }

JS

function voteup()
{
var dataString = 'test='+ test;
        $.ajax({
        type: "GET",
        url: "test.php?tar=vrate",
        data: dataString,
        cache: false,
        success: function(response)
        {  
            $(".response").fadeIn('slow').html(response);

        }
        });
 }

test.php的

if(isset($_POST["tar"]) && !empty($_POST["tar"]) || isset($_GET["tar"]) && !empty($_GET["tar"])) 
{
if(isset($_GET["tar"]) == "vrate")      
{ 
$cos = $_GET['test'];
echo $cos;
}
}

1 个答案:

答案 0 :(得分:1)

这段代码可以使用一些帮助,所以这里有一些指示和答案:

通过使用替代语法来保持php和html的清晰分离。

按钮没有href。我删除了onclick,因此它将附加在jquery中。

<div class="response"></div>    

<?php while($row = $result->fetch_assoc()): ?>
  <button value='<?=$row['id']?>' class='btn btn-default test'>
    <?=$row['voteup']?>
  </button>
<?php endwhile; ?>

JS

$(function() {
  $('.test').on('click', function() { // attach the click to the button
    var test_val = $(this).val(); // Grab the value from the button
    $.ajax({
        type: "GET",
        url: "test.php", // Move ?tar=vrate to the data array.
        data: {tar: 'vrate', test: test_val},
        cache: false,
        success: function(response)
        {  
            $(".response").fadeIn('slow').html(response);

        }
    });
  });
});

test.php的

由于您正在执行GET请求,因此$ _POST不应该有任何内容。每次只能设置$ _GET和$ _POST中的一个。您不能同时执行这两种类型的请求。

无需进行空测试,因为您无论如何都只是检查某个值。

if(isset($_GET["tar"]) && $_GET["tar"] == "vrate") 
{ 
  $cos = $_GET['test'];
  echo $cos;
}