麻烦发送attr int变量通过ajax,到php,到db列

Trouble sending attr int variable through ajax, to php, to db column

本文关键字:ajax php db attr int 变量 麻烦      更新时间:2023-09-26

可能是最长的方式,虽然我认为它起源于某处的一个例子。div的data-num

,我不确定在阅读了更多内容后是否可以使用它,
div class='bill_like' data-num="1"

在javascript

中用作变量
 $(document).ready(function () { 
 $('.bill_like').click(function() {
 var TriggerClick = 0;
 var id = $(this).attr('data-num');
    if(TriggerClick==0){
        TriggerClick=1;
        request = $.ajax({
            type: 'POST',
            url: 'php/bill_like_up.php',
            data: id
        });
        $(this).children( '.vote_label' ).children('.vote_up_image').attr('src', "img/vote_up_green.png");
    }else{
        TriggerClick=0;
        request = $.ajax({
            type: 'POST',
            url: 'php/bill_like_down.php',
            data: id
        });
        $(this).children( '.vote_label' ).children('.vote_up_image').attr('src', "img/vote_up.png");
        };
    });
        return false;
});

,然后将数据传递给.php。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
 $id = $_POST['id'];
 $query = mysqli_query($conn, "SELECT id, bill_like FROM ausdb WHERE id='$id'");
 $sql = "UPDATE ausdb SET bill_like = bill_like + 1 WHERE id='$id'"; 
 $res = mysqli_query($conn, $sql) or trigger_error(mysqli_error()." in ".$sql);
?>

图片改变,但没有更新数据库。对于同一文件中html中的不同元素,有许多变体。每个数据的值是否需要不同,就像唯一的id一样?我应该使用<a href="">访问javascript吗?我不知道为什么这不起作用。

你错过了位,你使用的是$_POST['id']所以你必须在post request中发送id

 data: {id:id},

我也认为如果他们只是一个参数,那么你可以在没有任何改变和更新$_POST['id'] to $_POST的情况下使用相同的ajax调用。对此我不确定。但从逻辑上讲,它应该是可行的。

将查询更改为"SELECT id, bill_like FROM ausdb WHERE id='".$id."'"(如果您想为id添加括号,则删除单引号)

传递如下值

$.ajax({
        type: 'POST',
        url: 'php/bill_like_down.php',
        data: {data-id : id } 
    });

服务器端检索使用$_POST['data-id']。这应该有所帮助。还要注意,如果id是整数,那么Update和select语句应该如下所示:

 $query = mysqli_query($conn, "SELECT id, bill_like FROM ausdb WHERE id=$id");
 $sql = "UPDATE ausdb SET bill_like = bill_like + 1 WHERE id=$id"; 

不需要单引号,因为它会将id视为字符串

在Java脚本中像下面这样传递数据ajax方法

 data: {id:id}

接收$_POST['id']

不需要因为id而产生混淆,所以使用

var idDataNum = $(this).attr('data-num');
....

在ajax中

 data: {id:idDataNum}

在sql中不需要单引号,所以使用

UPDATE ausdb SET bill_like = bill_like + 1 WHERE id=$id