我正在尝试实现投票系统并且有一个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;
}
}
答案 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;
}